k8s 证书更新

如何使用脚本更新Kubernetes集群证书

引言

Kubernetes集群中,由kubeadm初始化的证书有效期默认为一年。当这些证书接近或已经超过有效期时,它们必须被更新以保证集群的正常运作。本文将介绍如何使用特定脚本来更新这些证书,将它们的有效期延长至十年。

准备工作

在开始之前,请确保你的环境满足以下条件:

  • 已经安装了git,以便能够从GitHub克隆脚本。
  • 你的Kubernetes集群是由kubeadm初始化的。
  • 你有足够的权限在master节点上执行操作。
拉取更新证书脚本

打开终端,执行以下命令来拉取脚本:

yum install git

git clone https://github.com/yuyicai/update-kube-cert.git

cd update-kube-cert

chmod 755 update-kubeadm-cert.sh

更新证书

接下来,使用以下命令更新证书。如果集群使用的是containerd作为容器运行时,记得加上--cri containerd参数;否则,使用默认的docker运行时。

./update-kubeadm-cert.sh all --cri docker

请注意,执行命令时应当使用./bash来调用脚本,避免直接使用sh,以防在某些Linux发行版中因sh并非指向bash而引发的不兼容问题。

处理控制面Pods

执行完更新命令后,需要重启控制面的Pods。这是因为动态证书重载尚未被所有组件支持,所以手动重启是必要的。具体操作是将位于/etc/kubernetes/manifests/目录下的Pod清单文件临时移除,等待约20秒(取决于fileCheckFrequency值),然后将文件放回原处。这样kubelet将会终止和重新创建Pod,完成证书的更新。

输出示例与确认

执行更新后,脚本会输出类似的信息,列出已更新的证书和配置文件及其新的到期日期。例如:

此外,脚本还会记录备份和更新过程的日志,包括重启etcd、apiserver、controller-manager、scheduler等组件的信息,以及kubelet的重启。

总结

通过以上步骤,你可以成功地更新Kubernetes集群的证书,避免由于证书过期导致的集群不可用问题。记得在多master节点环境中,需要在每个master节点上重复执行上述步骤。

最后,确保检查更新后的集群状态,以验证更新过程是否成功,避免任何潜在的问题影响集群的稳定性和可用性。

参考资料

kubeadm certs renew all

通过以上指南,你可以有效地管理和维护Kubernetes集群的证书生命周期,确保集群的长期稳定运行。

相关推荐
小小的木头人几秒前
Docker Compose 镜像检测脚本(支持自动扫描 + 手动输入 YAML)
运维·docker·容器
沧州刺史38 分钟前
k8s 拉取镜像时,请求提前断开(EOF)导致拉取失败
云原生·容器·kubernetes
2501_9127840842 分钟前
告别“汗水出海”:基于微服务架构的跨境电商系统设计与实现——以Taocarts为例
微服务·云原生·架构·taocarts
牛奶咖啡131 小时前
k8s容器编排技术实践——k8s的介绍及其整体运行架构
云原生·kubernetes·k8s是什么?有啥用?·k8s的应用场景·k8s的优缺点边界·k8s的重要概念·k8s的整体运行架构
码农阿豪1 小时前
Docker 部署 XiuXianGame 文字修仙游戏:极空间 NAS 上随时挂机刷资源
游戏·docker·容器
狼与自由1 小时前
微服务的演化过程
微服务·云原生·架构
小坏讲微服务2 小时前
小白搭建K8S集群0基础教程实战
docker·云原生·容器·kubernetes
xingfujie3 小时前
Ubuntu K8s 1.28 kubeadm 高可用集群部署实战
linux·运维·服务器·docker·kubernetes
AI视觉网奇3 小时前
docker vllm 开机启动
docker·容器·vllm
9命怪猫3 小时前
[K8S小白问题集] - K8S为什么选择etcd而不是别的key-value DB?比如Redis
云原生·容器·kubernetes