Exercise 16.2: Detailed Steps
ssh root@HAPROXY_IP_ADDRESSsudo apt update && sudo apt install -y haproxyfrontend kubernetes-cp mode tcp option tcplog bind *:6443 default_backend kubernetes-cp-nodes backend kubernetes-cp-nodes mode tcp balance roundrobin server cp1 CP_IP_ADDRESS:6443 check listen stats bind :9999 mode http stats enable stats hide-version stats uri /stats{ sudo systemctl restart haproxy sudo systemctl status haproxy --no-pager }HAPROXY_IP_ADDRESS k8scpnslookup k8scpHAPROXY_IP_ADDRESS k8scpnslookup k8scp{ kubectl get node kubectl get pod -A }ssh root@SECOND_CP_IP_ADDRESSsudo apt update && sudo apt install -y \ curl apt-transport-https vim git wget gnupg2 net-tools \ software-properties-common lsb-release ca-certificates uidmap{ cat <<EOF | sudo tee /etc/modules-load.d/kubernetes.conf overlay br_netfilter EOF sudp modprobe overlay sudo modprobe br_netfilter cat <<EOF | sudo tee /etc/sysctl.d/kubernetes.conf net.bridge.bridge-nf-call-iptables = 1 net.bridge.bridge-nf-call-ip6tables = 1 net.ipv4.ip_forward = 1 EOF sudo sysctl --system sudo mkdir -p /etc/apt/keyrings curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt update && apt install -y containerd.io sudo containerd config default | tee /etc/containerd/config.toml sudo sed -e 's/SystemdCgroup = false/SystemdCgroup = true/g' -i /etc/containerd/config.toml sudo systemctl restart containerd cat <<EOF | sudo tee /etc/crictl.yaml runtime-endpoint: unix:///run/containerd/containerd.sock EOF }{ curl -s https://packages.cloud.google.com/apt/doc/apt-key.gpg | apt-key add - echo "deb http://apt.kubernetes.io/ kubernetes-xenial main" | sudo tee /etc/apt/sources.list.d/kubernetes.list sudo apt update && apt install -y kubelet=1.28.1-00 kubeadm=1.28.1-00 kubectl=1.28.1-00 sudo apt-mark hold kubelet kubeadm kubectl }HAPROXY_IP_ADDRESS k8scpnslookup k8scpssh root@THIRD_CP_IP_ADDRESSecho "sudo kubeadm join k8scp:6443 --control-plane \ --token $(sudo kubeadm token create) \ --discovery-token-ca-cert-hash sha256:$(openssl x509 -pubkey \ -in /etc/kubernetes/pki/ca.crt | openssl rsa \ -pubin -outform der 2>/dev/null | openssl dgst \ -sha256 -hex | grep -oE '[A-z0-9]+$') \ --certificate-key $(sudo kubeadm init phase upload-certs --upload-certs| tail -1)"... ... backend kubernetes-cp-nodes mode tcp balance roundrobin server cp1 CP_IP_ADDRESS:6443 check server cp2 SECOND_CP_IP_ADDRESS:6443 check server cp3 THIRD_CP_IP_ADDRESS:6443 check{ sudo systemctl restart haproxy sudo systemctl status haproxy --no-pager }kubectl get nodefor i in {1..10}; do kubectl get pod; donekubectl get pod -n kube-system -l component=etcdkubectl -n kube-system logs etcd-secondcp | grep leaderkubectl get pod -n kube-system -l component=etcd -o widekubectl get node -o widekubectl -n kube-system exec -it etcd-cp -- \ etcdctl -w table \ --endpoints localhost:2379 \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ member list{ export ETCD_ENDPOINTS=$(kubectl -n kube-system exec -it etcd-cp -- \ etcdctl -w json \ --endpoints localhost:2379 \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ member list \ | jq -r '.members | map(.clientURLs[]) | join(",")') echo $ETCD_ENDPOINTS }kubectl -n kube-system exec -it etcd-cp -- \ etcdctl -w table \ --endpoints $ETCD_ENDPOINTS \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ endpoint statuskubectl -n kube-system exec -it etcd-cp -- \ etcdctl -w table \ --endpoints $ETCD_ENDPOINTS \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ endpoint health{ sudo systemctl stop kubelet sudo crictl stop $(sudo crictl ps -q) sudo systemctl stop containerd.service }kubectl -n kube-system logs etcd-secondcp | grep leaderkubectl -n kube-system exec -it etcd-secondcp -- \ etcdctl -w table \ --endpoints $ETCD_ENDPOINTS \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ endpoint statuskubectl -n kube-system exec -it etcd-secondcp -- \ etcdctl -w table \ --endpoints $ETCD_ENDPOINTS \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ endpoint healthkubectl get node{ sudo systemctl start containerd.service sudo systemctl start kubelet }kubectl get nodekubectl get pod -A -o widekubectl -n kube-system exec -it etcd-secondcp -- \ etcdctl -w table \ --endpoints $ETCD_ENDPOINTS \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ endpoint statuskubectl -n kube-system exec -it etcd-secondcp -- \ etcdctl -w table \ --endpoints $ETCD_ENDPOINTS \ --cacert /etc/kubernetes/pki/etcd/ca.crt \ --cert /etc/kubernetes/pki/etcd/server.crt \ --key /etc/kubernetes/pki/etcd/server.key \ endpoint health
Last updated