Kubeadm证书检查报错:无法读取集群配置且缺失apiserver-etcd-client证书
Kubeadm证书检查报错:无法读取集群配置且缺失apiserver-etcd-client证书
嗨,我来帮你一步步排查解决这个问题。从你给出的报错信息来看,核心是两个问题:无法读取集群配置和缺失apiserver-etcd-client证书,咱们逐个处理:
一、解决「Error reading configuration from the Cluster. Falling back to default configuration」报错
这个提示说明kubeadm没法从集群的kubeadm-config ConfigMap读取配置,常见原因和解决办法如下:
- 先检查
kubeadm-configConfigMap是否存在:
执行命令确认:
如果显示找不到这个资源,大概率是集群初始化时没生成或者后续被误删了。你可以从其他正常的master节点导出该ConfigMap,再导入到当前集群:kubectl -n kube-system get cm kubeadm-config
在正常master节点执行:
把yaml文件传到有问题的节点后,执行:kubectl -n kube-system get cm kubeadm-config -o yaml > kubeadm-config.yamlkubectl apply -f kubeadm-config.yaml - 如果ConfigMap存在但仍报错,可能是当前节点的kubectl配置异常,比如
~/.kube/config权限不对或失效。可以重新生成kubectl配置:sudo cp /etc/kubernetes/admin.conf ~/.kube/config sudo chown $(id -u):$(id -g) ~/.kube/config - 要是你保留了当初初始化集群用的kubeadm配置文件,也可以直接指定配置文件执行检查:
kubeadm certs check-expiration --config=kubeadm-config.yaml
二、解决「!MISSING! apiserver-etcd-client」证书问题
apiserver-etcd-client证书是apiserver与etcd集群通信的关键凭证,缺失会影响apiserver对etcd的访问,处理步骤如下:
- 先确认证书文件是否真的不存在:
证书默认存放在/etc/kubernetes/pki目录,执行命令查看:
如果确实没有ls -l /etc/kubernetes/pki/apiserver-etcd-client.*.crt和.key文件,就需要重新生成证书。 - 重新生成apiserver-etcd-client证书:
用kubeadm的证书更新命令单独生成该证书:
这个命令会基于集群CA证书自动生成对应的客户端证书和密钥,生成后再执行kubeadm certs renew apiserver-etcd-clientkubeadm certs check-expiration,应该就不会显示MISSING了。 - 如果重新生成后仍有问题,需要检查apiserver的启动配置是否正确指定了证书路径:
查看apiserver pod的配置详情:
确认kubectl -n kube-system describe pod kube-apiserver-<你的节点名称> | grep -A 10 "etcd-client"--etcd-certfile和--etcd-keyfile参数指向的路径正确,且文件存在。
最后验证
处理完以上步骤后,再次执行:
kubeadm certs check-expiration
应该就能正常读取集群配置,且所有证书的过期信息都能正常显示了。
备注:内容来源于stack exchange,提问作者Wasil W. Siargiejczyk
相关产品推荐
相关产品推荐

