Kubernetes:过期证书

44

我们的Kubernetes 1.6集群在2017年4月13日构建时生成了证书。

2017年12月13日,我们将集群升级为版本1.8,并生成了新的证书[显然是不完全的证书]。

2018年4月13日,我们开始在Kubernetes仪表板的api-server中看到此消息:

[authentication.go:64]由于错误无法验证请求:[x509:证书已过期或尚未有效,x509:证书已过期或尚未有效]

尝试将/ etc / kubernetes / kubelet.conf中的client-certificateclient-key指向12月13日生成的证书[apiserver-kubelet-client.crt apiserver-kubelet-client.key],但仍然看到上述错误。

尝试将/etc/kubernetes/kubelet.conf中的client-certificateclient-key指向12月13日生成的不同的证书[apiserver.crtapiserver.key](我真的不理解这两组证书/密钥之间的区别),但仍然看到上述错误。

尝试将/ etc / kubernetes / kubelet.conf中的client-certificateclient-key指向不存在的文件,kube *服务中没有一个会启动,并且/var/log/syslog会抱怨这个问题:

Apr 17 17:50:08 kuber01 kubelet [2422]: W0417 17:50:08.181326 2422 server.go:381]无效的kubeconfig:无效的配置:[由于打开了/tmp/this/cert/does/not/exist.crt而无法读取system:node:node01的client-cert /tmp/this/cert/does/not/exist.crt,原因是没有这样的文件或目录,由于打开了/tmp/this/key/does/not/exist.key,无法读取system:node:node01的客户端密钥/tmp/this/key/does/not/exist.key:没有这样的文件或目录]

有没有关于如何克服这个错误的建议,或者更加精细地进行故障排除?曾考虑重新生成api-server的证书(kubeadm alpha phase certs apiserver),基于https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-alpha/#cmd-phase-certs中的指示...但不确定是否会造成更多的损害。

对Kubernetes相对较新,并且设置此内容的人无法提供咨询...感激任何帮助。谢谢。


如果尝试使用Tilt部署镜像,则它有自己的版本的此错误,其中包含描述+修复方法在此处 - Venryx
12个回答

0

我遇到了这个问题(microk8s - ubuntu 20.04.3),更新时间后问题得到解决:

sudo timedatectl set-ntp off
sudo timedatectl set-ntp on

0
如果您有一个HA环境,您只需执行以下命令即可:
kubeadm certs renew all

但请确保将其应用于您的集群的每个主节点。这在大多数情况下都有效。
对于额外的检查:
kubeadm certs check-expiration -v6 | grep "Config loaded"

上述操作应该会从文件中加载"kubelet.conf, admin.conf, controller-manager.conf和scheduler.conf",并返回"Config loaded"。
例如:
Config loaded from file: /etc/kubernetes/kubelet.conf

希望能帮到你。

网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接