Try   HackMD

Deploy a Kubernetes 1.16.0 cluster by kubeadm (Calico CNI)

tags: kubernetes, kubeadm

Install Docker

cat > install-docker.sh <<EOF #!/bin/bash apt update apt -y install apt-transport-https ca-certificates curl software-properties-common curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable" apt update apt-cache policy docker-ce apt install docker-ce -y usermod -aG docker $USER tee /etc/docker/daemon.json <<EOFF { "features": { "buildkit": true }, "exec-opts": [ "native.cgroupdriver=systemd" ], "log-driver": "json-file", "log-opts": { "max-size": "100m" }, "storage-driver": "overlay2" } EOFF systemctl restart docker EOF chmod +x install-docker.sh sudo ./install-docker.sh

Deploy the first master node

Install kubelet, kubeadm, kubectl

sudo apt update && sudo apt install -y apt-transport-https curl curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | sudo apt-key add - cat <<EOF | sudo tee /etc/apt/sources.list.d/kubernetes.list deb https://apt.kubernetes.io/ kubernetes-xenial main EOF sudo apt update sudo apt install -y kubelet kubeadm kubectl sudo apt-mark hold kubelet kubeadm kubectl

Initialize kubelet

cat > $HOME/kubeadm.yaml <<EOF apiVersion: kubeadm.k8s.io/v1beta2 kind: ClusterConfiguration kubernetesVersion: v1.16.0 controlPlaneEndpoint: $(hostname -i | awk '{print $1}'):6443 apiServer: extraArgs: advertise-address: 0.0.0.0 service-node-port-range: 80-32767 networking: podSubnet: 10.10.0.0/16 EOF sudo kubeadm init --config=$HOME/kubeadm.yaml --upload-certs

Initialize kubectl

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

Deploy CNI (Calico)

kubectl apply -f https://docs.projectcalico.org/v3.8/manifests/calico.yaml

Join nodes

(First master node) Generate join command

kubeadm token create --print-join-command

(First master node) Renew control-plane certificate for joining master nodes

sudo kubeadm init phase upload-certs --upload-certs

(Other master nodes) Join

sudo kubeadm join $FirstMasterNodeIP:6443 --token ty9hbt.upg5m0kg2ie4hfs7 \ --discovery-token-ca-cert-hash sha256:4ad90c898f85b99b26be18416e4bf1681fabbf9802d5a5ddf944cbedf151efaf \ --control-plane --certificate-key 868b976893f19b3f55f5eb63dd8f6c3934d1fa214093c3bd69e64b7e820e1b3f

(Worker nodes) Join

sudo kubeadm join $FirstMasterNodeIP:6443 --token a5dtig.7wl2ensfi864ymk8 \ --discovery-token-ca-cert-hash sha256:e792589dc40d385ceb3080585f579fafa2d92cf40d10be0f343cb3fb9ea60dad