Il y a quelques semaine, j’ai un problème avec un des nœuds master d’un de mes cluster Kubernetes. Il était instable, à cause d’un problème dans etcd. Nous allons voir comment supprimer proprement un nœud master d’un cluster Kubernetes afin de pouvoir l’ajouter à nouveau.
Situation de départ
Nous avons 3 nœuds master et nous allons remplacer master3.
[root@master1]$ kubectl get node --selector='node-role.kubernetes.io/master' -o name
node/master1
node/master2
node/master3
Nous avons aussi 3 pods etcd, un par master.
[root@master1]$ kubectl -n kube-system get pods -l component=etcd -o name
pod/etcd-master1
pod/etcd-master2
pod/etcd-master3
Supprimer le noeud
Nous allons supprimer master3 du cluster.
kubectl delete master3
Nettoyer etcd
Nous sommes maintenant sur la partie qu’il ne faut pas oublier. Si le nœud est toujours présent mais que vous essayez de l’ajouter à nouveau en utilisant le même nom, cela ne fonctionnera pas. Entrons dans le pod etcd de master1.
kubectl -n kube-system exec -ti etcd-master1 -- sh
Nous pouvons voir nos 3 etcd
# etcdctl -w table member list --cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key
+------------------+---------+---------+--------------------------+--------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+---------+--------------------------+--------------------------+------------+
| 2ed5356f21c6cb3f | started | master1 | https://192.168.0.1:2380 | https://192.168.0.1:2379 | false |
| 4dc5b3633fbc1106 | started | master2 | https://192.168.0.2:2380 | https://192.168.0.2:2379 | false |
| d1a4440f2bc1471e | started | master3 | https://192.168.0.3:2380 | https://192.168.0.3:2379 | false |
+------------------+---------+---------+--------------------------+--------------------------+------------+
Nous pouvons maintenant supprimer master3 en utilisant son ID.
etcdctl member remove d1a4440f2bc1471e --cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key
master3 a bien été supprimé du cluster
# etcdctl -w table member list --cacert /etc/kubernetes/pki/etcd/ca.crt \
--cert /etc/kubernetes/pki/etcd/server.crt --key /etc/kubernetes/pki/etcd/server.key
+------------------+---------+---------+--------------------------+--------------------------+------------+
| ID | STATUS | NAME | PEER ADDRS | CLIENT ADDRS | IS LEARNER |
+------------------+---------+---------+--------------------------+--------------------------+------------+
| 2ed5356f21c6cb3f | started | master1 | https://192.168.0.1:2380 | https://192.168.0.1:2379 | false |
| 4dc5b3633fbc1106 | started | master2 | https://192.168.0.2:2380 | https://192.168.0.2:2379 | false |
+------------------+---------+---------+--------------------------+--------------------------+------------+
Conclusion
Vous pouvez maintenant ajouter à nouveau votre nœud au cluster. Si vous ne l’avez pas réinstallé, n’oubliez pas de nettoyer la configuration locale de Kubernetes et de déployer à nouveaux les certificats du cluster.
Pour réinitialiser le noeud, depuis master3 :
kubeadm reset -f