今天我们实验室的 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
时,一切又恢复正常了。