Contexte
Si une node d’un cluster Kubernetes change d’addresse IP, Kubectl ne fonctionnera plus correctement. La node ne ce provisionnera pas correctement et le cluster peut tomber en panne. Idéalement, l’IP ne devrait jamais changer.
Toutefois, si elle change, il faut re-créer la node. Il existe un article medium qui démontre les étapes à suivre. Voici les grandes lignes:
systemctl stop kubelet docker
cd /etc/
# backup old kubernetes data
mv kubernetes kubernetes-backup
mv /var/lib/kubelet /var/lib/kubelet-backup
# restore certificates
mkdir -p kubernetes
cp -r kubernetes-backup/pki kubernetes
rm kubernetes/pki/{apiserver.*,etcd/peer.*}
systemctl start docker
# Il est peut-etre obliger d'executer ceci:
# kubeadm reset
# reinit master with data in etcd
# add --kubernetes-version, --pod-network-cidr and --token options if needed
kubeadm init --ignore-preflight-errors=DirAvailable--var-lib-etcd
# update kubectl config
cp kubernetes/admin.conf ~/.kube/config
# wait for some time and delete old node
sleep 120
kubectl get nodes --sort-by=.metadata.creationTimestamp
kubectl delete node $(kubectl get nodes -o jsonpath='{.items[?(@.status.conditions[0].status=="Unknown")].metadata.name}')
# check running pods
kubectl get pods --all-namespaces