Use Kubekey to quickly deploy Kubernetes

Introduction

Kubekey is an open source Kubernetes Rapid Deployment Tool developed by Qingyun and is the next generation of kubesphere installation tools. With Kubekey you can easily deploy a Kubernetes/Kubespher environment, my experience is simply too simple!

This article focuses on Kubekey for rapid deployment of kubernets single nodes, and multi-node deployment will be covered in the next article.

Download Kubekey

 

#specified version
Curl –sfl https://get-kk.kubesphere.io |VERSION=v1.2.1 sh
 
#Latest version
 
Curl –sfl https://get-kk.kubesphere.io | sh

Start writing deployment profiles

Start by creating a default configuration file with the KK Command

[root@lan1 temp]# kk create config
[root@lan1 temp]# ls
config-sample.yaml
[root@lan1 temp]# cat config-sample.yaml 
apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: sample
spec:
  hosts:
  {name: kk1, address: 172.16.0.2, internalAddress: 172.16.0.2, user: ubuntu, password: Qcloud@123}
    etcd:
    - node1
    master: 
    - node1
    worker:
    - node1
  controlPlaneEndpoint:
    ##Internal loadbalancer for apiservers 
    #internalLoadbalancer: haproxy
    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.19.8
    clusterName: cluster.local
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
  registry:
    registryMirrors: []
    insecureRegistries: []
  addons: []



Modify the node-related information for their own actual node information, you can see a I modified my configuration file

apiVersion: kubekey.kubesphere.io/v1alpha1
kind: Cluster
metadata:
  name: lan
spec:
  hosts:
  {name: kk1, address: 192.168.3.152, internalAddress: 10.0.2.11, user: root, password: 123,port: 111}
  roleGroups:
    etcd:
    - kk1
    master: 
    - kk1
    worker:
    - kk1
  controlPlaneEndpoint:
    domain: lb.kubesphere.local
    address: ""
    port: 6443
  kubernetes:
    version: v1.19.8
    clusterName: cluster.local
  network:
    plugin: calico
    kubePodsCIDR: 10.233.64.0/18
    kubeServiceCIDR: 10.233.0.0/18
  registry:
    registryMirrors: []
    insecureRegistries: []



I deployed Kubernetes for version 1.19.8, and CNI used Kubekey's default calico. NET.

Start the deployment

Set the environment variables before deployment:

export KKZONE=cn

 

Because by default KK is binary file to github (KUBECTLKUBELETKUBEADM...) and to dockerhub to download the container image, after setting the above environment variable, uh, the download binary file will go to Qingyun to download the binary file, as well as to Ali's mirror warehouse to download the required images, it is necessary to use domestic materials in network.

Then start deploying:

[root@lan1 tmp]# kk create cluster -f config-sample.yaml -y
INFO[11:40:08 EDT] Downloading Installation Files               
INFO[11:40:08 EDT] Downloading kubeadm ...                      
INFO[11:40:10 EDT] Downloading kubelet ...                      
INFO[11:40:11 EDT] Downloading kubectl ...                      
INFO[11:40:11 EDT] Downloading helm ...                         
INFO[11:40:11 EDT] Downloading kubecni ...                      
INFO[11:40:12 EDT] Downloading etcd ...                         
INFO[11:40:12 EDT] Downloading docker ...                       
INFO[11:40:12 EDT] Downloading crictl ...                       
INFO[11:40:12 EDT] Configuring operating system ...             
[kk0 192.168.3.152] MSG:
net.ipv4.ip_forward = 1
net.bridge.bridge-nf-call-arptables = 1
...
INFO[11:40:24 EDT] Installing Container Runtime ...             
INFO[11:40:26 EDT] Start to download images on all nodes        
[kk2] Downloading image: registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.2
[kk0] Downloading image: registry.cn-beijing.aliyuncs.com/kubesphereio/pause:3.2
[kk2] Downloading image: registry.cn-beijing.aliyuncs.com/kubesphereio/kube-proxy:v1.19.8
[kk0] Downloading image: registry.cn-beijing.aliyuncs.com/kubesphereio/kube-apiserver:v1.19.8
...
INFO[11:42:41 EDT] Creating etcd service                        
Push /root/repo/git/tmp/kubekey/v1.19.8/amd64/etcd-v3.4.13-linux-amd64.tar.gz to 192.168.3.152:/tmp/kubekey/etcd-v3.4.13-linux-amd64.tar.gz   Done
INFO[11:42:45 EDT] Starting etcd cluster   
...

Kubekey will finish installing Dockercontainerd, binary file everything you need, and start deploying Kubernetes with KUBEADM. one-click deployment is almost too comfortable!

All you have to do is wait.

Deployment complete, check pod status

When you see the Pod successfully deployed, take a look at the Pod:

[root@kk1 ~]# kubectl get po -A
NAMESPACE     NAME                                      READY   STATUS    RESTARTS   AGE
kube-system   calico-kube-controllers-d75c96f46-dqq4z   1/1     Running   0          37m
kube-system   calico-node-hkpq9                         1/1     Running   0          37m
kube-system   coredns-867b49865c-qtjrz                  1/1     Running   0          37m
kube-system   coredns-867b49865c-vmsgs                  1/1     Running   0          37m
kube-system   kube-apiserver-kk1                        1/1     Running   0          37m
kube-system   kube-controller-manager-kk1               1/1     Running   0          37m
kube-system   kube-proxy-x7722                          1/1     Running   0          37m
kube-system   kube-scheduler-kk1                        1/1     Running   0          37m
kube-system   nodelocaldns-8hh5d                        1/1     Running   0          37m

As you can see, all the pods are up and running, and you can happily use the Kubernetes.

  1. Be careful
  2. The internalAddressneeds to be filled in with the IP address of the network card, which is used by ETCD, otherwise it will fail to deploy etcd.
  3. Remember to set the environment variable kkzone = cn, otherwise it might be very slow to download the binary file!
posted @ 2022-11-28 10:02  王晓驰  阅读(39)  评论(0)    收藏  举报