前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >专栏 >K8S证书更新时-吴‘apiserver|scheduler|controller-manager’删除组件

K8S证书更新时-吴‘apiserver|scheduler|controller-manager’删除组件

作者头像
误入歧途
发布于 2025-04-12 11:15:54
发布于 2025-04-12 11:15:54
9400
代码可运行
举报
文章被收录于专栏:误入歧途误入歧途
运行总次数:0
代码可运行

K8S 证书更新时-吴删除组件

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
[root@master ~] eth0 = 172.17.64.32
# docker rm -f docker ps | grep -E 'apiserver|scheduler|controller-manager'| awk '{print$1}'
7856f2a3068e
2e1a6956d8a1
e9e3cb7870a9
31b19f4e2b22
c028146f88a5
abe4207808a3
[root@master ~] eth0 = 172.17.64.32
# docker ps | grep -E 'apiserver|scheduler|controller-manager'
[root@master ~] eth0 = 172.17.64.32
# 
[root@master ~] eth0 = 172.17.64.32
# kubectl get  pod
The connection to the server 172.17.64.32:6443 was refused - did you specify the right host or port?

1、 起因K8S集群证书过期更新:

  • 执行了 kubeadm certs renew all,成功更新了 Kubernetes 集群的证书(包括 API Server、Controller Manager、Scheduler 等)。
  • 更新用户凭证 之后重启 kubelet,解决Unable to connect to the server: x509: certificate has expired or is not yet valid 证书报错

2、 误删除容器:

  • 本是重启组件服务的,眼疾手快直接删除了,以为k8s会自动拉起,后面才发现这些组件时通过这些 Pod 由 kubelet 直接管理,不依赖 Kubernetes API Server 的调度和控制,
  • 在执行 docker rm -f (docker ps | grep -E 'apiserver|scheduler|controller-manager' | awk '{print 1}') 后,删了 apiserver、scheduler、controller-manager 容器,导致集群状态不稳定,API Server 等组件无法访问。

3、Kubelet 服务失败:

  • 尝试重启 kubelet 后,服务进入“激活中”状态,最终失败,原因是无法加载配置文件 /etc/kubernetes/kubelet.conf,并且日志显示证书过期或丢失。
  • kubeadm init phase kubeconfig kubelet 命令未能解决问题,因文件损坏或丢失,导致 kubelet 仍然无法启动。

4、删除 kubelet.conf 文件并重新生成配置:

手动删除了 /etc/kubernetes/kubelet.conf 文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# 记得备份在删除
# cp /etc/kubernetes/kubelet.conf /opt/
# rm -rf /etc/kubernetes/kubelet.conf

执行了 kubeadm init phase kubeconfig kubelet 重新生成了 kubelet.conf 文件:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# kubeadm init phase kubeconfig kubelet

生成新的 kubelet.conf 文件后,重启了 kubelet 服务:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# systemctl restart kubelet

5、问题解决:

重启 kubelet 后,服务成功启动,容器重新被拉起,并且 kubelet 重新注册到集群中。可以通过以下命令确认集群状态:

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# kubectl get node
image-20250411164942872
image-20250411164942872
代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
# docker ps | grep -E 'apiserver|scheduler|controller-manager' | awk '{print $1}'
image-20250411164942872
image-20250411164942872

问题总结:

  • 根本问题:在证书更新后,kubelet 无法加载证书和配置文件,导致 Kubernetes 集群无法正常运行。误操作删除容器后,API Server 等组件也无法启动,进一步导致 kubelet 启动失败。
  • 解决方案:删除 /etc/kubernetes/kubelet.conf 文件,重新生成并应用新的配置文件,最后重启 kubelet 服务。这样就恢复了正常的集群状态。

如果以后还遇到类似的情况,可以提前备份相关配置文件,特别是 kubelet.conf,以防配置丢失或者损坏。

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-04-11,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • K8S 证书更新时-吴删除组件
    • 1、 起因K8S集群证书过期更新:
    • 2、 误删除容器:
    • 3、Kubelet 服务失败:
    • 4、删除 kubelet.conf 文件并重新生成配置:
    • 5、问题解决:
    • 问题总结:
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档