Сегодня наш кластер лаборатории k8s перестал работать на кластере. Когда я копал, это было из-за того, что сертификаты истекли.
Я пересоздал сертификаты и конфигурации, но когда я перезапускаю kubelet, мы все равно попадаем connection refused
на apiserver. Apiserver работает, но порт 6443 не открыт. При отладке журналов в выводе появляется следующая ошибка (возможно, это отвлекающий маневр, но не уверен):
Current certificate CN (system:node:lab-02) does not match requested CN (system:node:control-plane-xm2c9)
Это kubeadm
созданный кластер. Я использовал kubeadm
для повторной генерации всех сертификатов (кроме CA). Были использованы следующие команды:
# 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
Я создал конфигурации с помощью:
# 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
Я все еще просматриваю логи. Думаю, это корень моей проблемы, но я не уверен, как ее решить. Любая помощь была бы здоровой! TIA
решение1
Проблема, если я правильно помню, была в том, что был сертификат, который вышеупомянутые команды не обновляли, но требовали. Это был сертификат sa
. К счастью, прежде чем я начал работать над этим, я сделал резервную копию всех сертификатов, /var/tmp
и sa
сертификат был там и все еще действителен. Когда я скопировал сертификат sa
обратно в каталог сертификатов и перезапустил, kubelet
все снова заработало.