当前位置: 首页 > news >正文

k8s证书过期怎么更新?

在 Kubernetes 集群中,证书过期可能导致集群不可用,尤其是 API Server、Controller Manager、Scheduler 等组件所使用的证书。为了恢复集群的正常运行,您需要更新这些证书。以下是更新 Kubernetes 证书的基本步骤:

1. 检查证书状态

首先,确认哪些证书已经过期或即将过期。

sudo openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"

您可以在 /etc/kubernetes/pki/ 目录下找到 Kubernetes 的证书文件,如 apiserver.crt、ca.crt、etcd/server.crt 等。

2. 自动更新证书(kubeadm 管理的集群)

如果您是使用 kubeadm 部署的 Kubernetes 集群,kubeadm 提供了更新证书的简便方法:

sudo kubeadm certs renew all

该命令会自动更新所有证书,包括 API Server、Controller Manager、Scheduler 等组件的证书。更新完成后,您可以查看新的证书有效期:

sudo kubeadm certs check-expiration

3. 手动更新证书

对于手动部署的 Kubernetes 集群,您可能需要自行生成和替换证书。以下是手动更新的步骤:

  1. 生成新的证书和私钥: 使用 openssl 或 cfssl 工具生成新的证书。例如,使用 openssl:
openssl genrsa -out apiserver.key 2048
openssl req -new -key apiserver.key -out apiserver.csr -subj "/CN=kube-apiserver"
openssl x509 -req -in apiserver.csr -CA ca.crt -CAkey ca.key -CAcreateserial -out apiserver.crt -days 365
  1. 替换旧证书和密钥: 将生成的新的证书和密钥替换到 /etc/kubernetes/pki/ 目录下。注意确保文件名与旧的证书和密钥一致,如 apiserver.crt、apiserver.key 等。

重启相关 Kubernetes 组件: 替换证书后,您需要重启 Kubernetes 的组件,以便它们加载新的证书。

  1. 对于 kube-apiserver,使用以下命令:
sudo systemctl restart kube-apiserver

或者使用 Kubernetes 静态 Pod 文件的方式管理时,直接重启 kubelet 会自动重启这些组件。

4. 更新 kubelet 证书

kubelet 证书的更新稍有不同,您可以通过以下方式更新:

  • 如果 kubelet 使用的是自动轮换的证书,您可以手动触发轮换:
sudo systemctl restart kubelet
  • 如果 kubelet 没有自动轮换证书,您可以使用 kubeadm 重新生成:
sudo kubeadm certs renew kubelet

5. 检查证书更新状态

确保所有证书已正确更新并生效,可以再次检查证书的过期时间:

bash
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep "Not After"

6. 备份新证书

在更新证书之后,建议将新生成的证书和密钥进行备份,以防日后需要恢复或排查问题。

总结

在 Kubernetes 集群中,证书的更新可以通过 kubeadm 工具自动完成,也可以通过手动生成和替换证书的方式来实现。对于使用 kubeadm 部署的集群,自动更新方法较为简单。对于非 kubeadm 管理的集群,则需要手动管理证书的生成和替换。无论哪种方法,更新后都需要重启相关的 Kubernetes 组件以使新证书生效。

http://www.lryc.cn/news/535342.html

相关文章:

  • 活动预告 |【Part 1】Microsoft 安全在线技术公开课:通过扩展检测和响应抵御威胁
  • AIGC-微头条爆款文案创作智能体完整指令(DeepSeek,豆包,千问,Kimi,GPT)
  • C# 比较两个List集合内容是否相同
  • vue2 多页面pdf预览
  • 【python】matplotlib(animation)
  • Hello Robot 推出Stretch 3移动操作机器人,赋能研究与商业应用
  • 从零到一:我的元宵灯谜小程序诞生记
  • Docker 安装与配置 Nginx
  • Oracle常见语法
  • 在Vue3中使用Echarts的示例 两种方法
  • 【docker】docker改动镜像并重新编译举例
  • 具身智能训练新思路!将生成视频用于训练机器人
  • 15、深度学习-自学之路-反向传播程序展示、激活函数的应用,反向权重的更新、2层神经网络的应用,输入输出相关性的理解。
  • 【JavaEE进阶】依赖注入 DI详解
  • 医疗影响分割 | 使用 Swin UNETR 训练自己的数据集(3D医疗影像分割教程)
  • IGBT的两级关断
  • 微服务与网关
  • “云计算一哥”一口气发布6个大模型、3nm芯片!多模态还要搞Any-to-Any
  • pytest生成报告no tests ran in 0.01s
  • 如何修改DNS解析?
  • PyTorch 中 `torch.cuda.amp` 相关警告的解决方法
  • 微服务组件LoadBalancer负载均衡
  • 如何本地部署DeepSeek
  • vite + axios 代理不起作用 404 无效
  • centos7 升级openssl并安装python3
  • 使用 SDKMAN! 在 Mac(包括 ARM 架构的 M1/M2 芯片)上安装 Java 8
  • 【干活分享】2025年可以免费问答的一些GPT网站-deepseek等免费gpt
  • 20250211解决荣品的RK3566核心板在Android13下出现charge_extrem_low_power的问题
  • MapReduce到底是个啥?
  • 算法02-各种排序算法