Post

[Kubernetes] Install Kubekey

[Kubernetes] Install Kubekey

KubeKey 설치

1. script 다운로드

1
2
3
curl -sfL https://get-kk.kubesphere.io | VERSION=v3.0.7 sh -
or
curl -sfL https://get-kk.kubesphere.io | sh -

2. Binary Downloads

  • https://github.com/kubesphere/kubekey/releases

3. Build Binary from Source Code

1
2
3
git clone https://github.com/kubesphere/kubekey.git
cd kubekey
make kk

Quick Start

  • Quick Start is for all-in-one installation which is a good start to get familiar with Kubernetes and KubeSphere.
  • Note: Since Kubernetes temporarily does not support uppercase NodeName, contains uppercase letters in the hostname will lead to subsequent installation error

Command

  • If you have problem to access https://storage.googleapis.com, execute first export KKZONE=cn.
    1
    
    ./kk create cluster [--with-kubernetes versio] [--with-kubesphere version]
    

Examples

  • Create a pure Kubernetes cluster with default version (Kubernetes v1.23.10).
    1
    
    ./kk create cluster
    
  • Create a Kubernetes cluster with a specified version.
    1
    
    ./kk create cluster --with-kubernetes v1.24.1 --container-manager containerd
    
  • Create a Kubernetes cluster with KubeSphere installed.
    1
    
    ./kk create cluster --with-kubesphere v3.2.1
    

4. 세부 설정을 위한 Create Config

1
./kk create config [--with-kubernetes version] [--with-kubesphere version] [(-f | --filename) path]
  • 다른 파일 이름이나 다른 폴더에 있는 파일을 지정할 수도 있다.
    1
    
    ./kk create config [--with-kubernetes version] [(-f | --file) path]
    
    1
    
    ./kk create config --with-kubernetes v1.20.4
    

vi config-sample.yaml

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  - {name: master, address: 192.168.0.1, internalAddress: 192.168.0.1, user: root, password: Testing123}
  - {name: worker1, address: 192.168.0.2, internalAddress: 192.168.0.2, user: root, password: Testing123}
  - {name: worker2, address: 192.168.0.3, internalAddress: 192.168.0.3, user: root, password: Testing123}
  roleGroups:
    etcd:
    - master
    master:
    - master
    worker:
    - worker1
    - worker2
  controlPlaneEndpoint:
    domain: lb.kubesphere.local
    address: ""
    port: "6443"
  kubernetes:
    version: v1.17.9
    imageRepo: kubesphere
    clusterName: cluster.local
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
  registry:
    registryMirrors: []
    insecureRegistries: []
  addons: []
hosts:
- {name: master, address: 192.168.0.1, internalAddress: 192.168.0.1, privateKeyPath: "~/.ssh/id_rsa"}

5. Install Cluster

1
./kk create cluster -f config-sample.yaml

Cluster 설치하면서 log 확인

1
kubectl logs -n kubesphere-system $(kubectl get pod -n kubesphere-system -l 'app in (ks-install, ks-installer)' -o jsonpath='{.items[0].metadata.name}') -f

Kubernetes 일반 유저 일 때

1
2
3
mkdir -p $HOME/.kube
sudo cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
sudo chown $(id -u):$(id -g) $HOME/.kube/config

만약 일반 계정에서 아래와 sudo 명령어 없이 kubectl 명령어 사용시 아래와 같은 오류가 발생하면

error: error loading config file “/etc/kubernetes/admin.conf”: open /etc/kubernetes/admin.conf: permission denied 아래 명령어를 입력하면 sudo 없이 사용 가능합니다.

1
export KUBECONFIG=$HOME/.kube/config
  • error making pod data directories: mkdir /var/lib/kubelet/pods/86cfe394-ba32-4a9f-ad65-1fb21f98a4ba: read-only file system
    1
    2
    3
    
    chown -R kubelet:kubelet /var/lib/kubelet/pods
    chmod 750 /var/lib/kubelet/pods
    systemctl restart kubelet
    
This post is licensed under CC BY 4.0 by the author.