Unable to connect to the server: x509: certificate has expired or is not yet valid

该错误表示kubectl无法验证Kubernetes API server的证书,因此无法连接集群。要解决该错误,我们需要更新证书。
如果使用kubeadm创建的集群,可以通过以下方式更新证书:
1. 运行以下命令更新所有证书:
sudo kubeadm alpha certs renew all --config=kubeadm.yaml 
该命令会在/etc/kubernetes/pki目录下重新生成ca证书和所有服务的客户端证书、服务端证书以及ca-client-ca-server证书等。
2. kubeadm.yaml文件是kubeadm init时使用的YAML文件,该文件中包含有关集群CA和API server的信息。如果无法找到该文件,可以重新运行:
sudo kubeadm init --config=kubeadm.yaml
这将重新生成主要证书,但不会影响现有工作负载。
3. 重新启动相关服务使新证书生效:
systemctl restart kube-apiserver kube-controller-manager kube-scheduler

# 如果是docker作为容器的话,可执行如下命令。其余容器方法类似
docker ps |grep kube-apiserver|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
docker ps |grep kube-controller-manage|grep -v pause|awk '{print $1}'|xargs -i docker restart {}
docker ps |grep kube-scheduler|grep -v pause|awk '{print $1}'|xargs -i docker restart {}



4. 在其余节点上,分发新的/etc/kubernetes/pki和新的kubeconfig配置:
sudo kubeadm upgrade node experimental-control-plane
该命令会分发新的API server证书并要求所有控制平面组件重新加载证书。
5. 删除浏览器中保存的旧CA并重新访问仪表板。
6. 用户也需要更新~/.kube/config中的证书数据或重新获取kubeconfig文件。
及时更新证书是管理K8s集群安全的重要工作。熟悉证书在K8s中的作用和更新过程,可以帮助我们妥善维护证书,保证集群稳定运行。

由 kubeadm 生成的客户端证书默认只有一年有效期,我们可以通过 check-expiration 命令来检查证书是否过期:
$ kubeadm alpha certs check-expiration
  • 0
    点赞
  • 2
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值