Hoje nosso cluster k8s de laboratório parou de permitir o trabalho no cluster. Quando investiguei, foi porque os certificados expiraram.
Regenerei os certificados e configurações, mas quando reinicio o kubelet, ainda chegamos connection refused
ao apiserver. O apiserver está em execução, mas a porta 6443 não está aberta. Ao depurar logs, o seguinte erro aparece na saída (talvez uma pista falsa, mas não tenho certeza):
Current certificate CN (system:node:lab-02) does not match requested CN (system:node:control-plane-xm2c9)
Este é um kubeadm
cluster criado. Eu costumava kubeadm
regenerar todos os certificados (exceto a CA). Os seguintes comandos foram usados:
# kubeadm init phase certs apiserver --apiserver-cert-extra-sans control-plane-xm2c9 --apiserver-advertise-address 192.168.2.78
# kubeadm init phase certs apiserver-etcd-client
# kubeadm init phase certs apiserver-kubelet-client
Eu criei as configurações com:
# kubeadm init phase kubeconfig admin --apiserver-advertise-address 192.168.2.78
# kubeadm init phase kubeconfig kubelet --apiserver-advertise-address 192.168.2.78
# kubeadm init phase kubeconfig controller-manager --apiserver-advertise-address 192.168.2.78
# kubeadm init phase kubeconfig scheduler --apiserver-advertise-address 192.168.2.78
Ainda estou vasculhando os registros. Acho que essa é a raiz do meu problema, mas não sei como resolvê-lo. Qualquer apoio seria bom! TIA
Responder1
O problema, se bem me lembro, era que havia um certificado de que os comandos mencionados acima não eram atualizados, mas eram necessários. Foi o sa
certificado. Felizmente, antes de começar qualquer trabalho nisso, fiz backup de todos os certificados /var/tmp
e o sa
certificado estava lá e ainda era válido. Quando copiei o sa
certificado de volta para o diretório cert e reiniciei kubelet
, tudo funcionou novamente.