etcd icon

Supprimer un nœud master d’un cluster Kubernetes HA

Posted by

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

Leave a Reply

Votre adresse e-mail ne sera pas publiée. Les champs obligatoires sont indiqués avec *