Mám už nějaký vytvořený master server. Dokonce už mám jeden worker node, oba dva fungují na stejném operačním systému, stejné verzi kubernetes (debian/ubuntu) a k tomu teď přidávám Alma Linux Worker Node. Tedy, jinou distribuci linuxu, starší kernel (4.18 vs. 5.x kernel) avšak stejnou verzi kubernetes (1.23.3)
Výsledek vypadá takto:
kubenode2 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster Ready control-plane,master 3d23h v1.23.3
kubenode2.local Ready 27s v1.23.3
kubenode3 Ready 3d23h v1.23.3
Nainstaloval jsem takto:
dnf install epel-release -y && dnf --enablerepo=epel -y install snapd && ln -s /var/lib/snapd/snap /snap && echo 'export PATH=$PATH:/var/lib/snapd/snap/bin' | sudo tee -a /etc/profile.d/snap.sh && systemctl enable --now snapd.service snapd.socket && snap install kubectl --classic && swapoff -a && sed -i '/swap/d' /etc/fstab
firewall-cmd --permanent --add-port=10250/tcp
firewall-cmd --permanent --add-port=30000-32767/tcp
firewall-cmd --reload
systemctl stop firewalld
systemctl disable firewalld
echo "[docker]
baseurl=https://download.docker.com/linux/centos/8/x86_64/stable/
gpgcheck=0" > /etc/yum.repos.d/docker.repo
yum -y install docker-ce
systemctl enable docker
systemctl start docker
systemctl status docker
echo "
[kubernetes]
name=Kubernetes
baseurl=https://packages.cloud.google.com/yum/repos/kubernetes-el7-x86_64
enabled=1
gpgcheck=1
repo_gpgcheck=1
gpgkey=https://packages.cloud.google.com/yum/doc/yum-key.gpg https://packages.cloud.google.com/yum/doc/rpm-package-key.gpg
" > /etc/yum.repos.d/kubernetes.repo
yum install -y kubelet kubeadm kubectl --disableexcludes=Kubernetes
systemctl enable kubelet
systemctl start kubelet
systemctl status kubelet
V /etc/hosts jsem musel přidat (pozor, mám to jak na masteru, tak na node2, který přidávám do clusteru)
192.168.123.83 kubenode2 kubenode2.local
192.168.123.85 kubenode3 kubenode3.local
192.168.123.86 kubemaster
A protože už jsem měl nodu předtím přidanou někam jinam, tak jsem musel provést
kubeadm reset
Na master nodu dát příkaz:
kubeadm token create --print-join-command
To mi vyplivne příkaz, který spustím na nově přidaném nodu do clusteru:
kubeadm join 192.168.123.86:6443 --token kód.nejakytoken --discovery-token-ca-cert-hash sha256:enejakýHashca-certu
To mi na nodu vypíše:
[preflight] Running pre-flight checks
[WARNING FileExisting-tc]: tc not found in system path
[preflight] Reading configuration from the cluster...
[preflight] FYI: You can look at this config file with 'kubectl -n kube-system get cm kubeadm-config -o yaml'
W0215 00:38:14.506269 3321 utils.go:69] The recommended value for "resolvConf" in "KubeletConfiguration" is: /run/systemd/resolve/resolv.conf; the provided value is: /run/systemd/resolve/resolv.conf
[kubelet-start] Writing kubelet configuration to file "/var/lib/kubelet/config.yaml"
[kubelet-start] Writing kubelet environment file with flags to file "/var/lib/kubelet/kubeadm-flags.env"
[kubelet-start] Starting the kubelet
[kubelet-start] Waiting for the kubelet to perform the TLS Bootstrap...
This node has joined the cluster:
* Certificate signing request was sent to apiserver and a response was received.
* The Kubelet was informed of the new secure connection details.
Run 'kubectl get nodes' on the control-plane to see this node join the cluster.
Po vypsání příkazu kubectl get nodes:
kubenode2 ~]# kubectl get nodes
NAME STATUS ROLES AGE VERSION
kubemaster Ready control-plane,master 3d23h v1.23.3
kubenode2.local Ready <none> 10m v1.23.3
kubenode3 Ready <none> 3d23h v1.23.3
Opětovné přidání dříve přidané nody do kubernetes clusteru
na node2 dám příkaz:
kubeadm reset
na masteru:
kubeadm token create –print-join-command
Vyplivne mi to nový příkaz pro node2 pro opětovné přidání. bude to vypadat nějak takto:
kubeadm join 192.168.123.86:6443 –token kód.nejakytoken –discovery-token-ca-cert-hash sha256:enejakýHashca-certu
Ten vezmu copy&pastnu a spustím na node2, který chci opětovně přidat do clusteru.
A funguji bez problémů.