K8S 证书又过期了,我一把给集群续了 100 年,一劳永逸
一次性将Kubernetes集群证书续期100年?先别急,小心这个“隐藏”的坑
相信不少运维同学都遇到过这样的头疼事:Kubernetes集群运行得好好的,突然某天就“失联”了。一查日志,证书过期。这事儿还真不是小概率事件,因为K8s默认颁发的组件证书有效期只有一年。一旦几个关键证书(比如apiserver、etcd)过期,整个集群瘫痪可不是开玩笑的——apiserver起不来,kubelet连不上,业务中断就在一瞬间。
免费影视、动漫、音乐、游戏、小说资源长期稳定更新! 👉 点此立即查看 👈
所以,一个很自然的想法就冒出来了:能不能一劳永逸,直接把证书有效期改成100年?今天我们就来详细拆解这个操作,过程看似简单,但里面有个关键反转,如果你没注意到,可能就白忙活一场。
这是修改前,证书的过期时间情况:

而我们的目标,是实现像下面这样的“百年大计”:

1. 将证书改为100年
假设我们手头有一个用kubeadm部署的K8s集群,版本是1.33.5,操作步骤如下。

第一步,导出kubeadm配置。
先通过ConfigMap把当前的集群配置导出来:
kubectl -n kube-system get cm kubeadm-config -o jsnotallow='{.data.ClusterConfiguration}' > kubeadm-new.yaml

第二步,修改证书有效期参数。
编辑刚才导出的 kubeadm-new.yaml 文件,找到并修改两个关键字段:
caCertificateValidityPeriod:CA证书的有效期certificateValidityPeriod:普通组件证书的有效期
把它们都设置为 876000h0m0s。这里简单算一下,876000小时正好等于100年。两个参数分别针对CA证书和普通证书,这点很重要,后面我们会详细说。

第三步,更新所有证书并重启服务。
执行更新命令,并重启kubelet让更改生效:
kubeadm certs renew all --config kubeadm-new.yaml
systemctl restart kubelet

第四步,更新kubeconfig文件。
证书更新后,记得更新本地管理配置:
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config
第五步,检查成果。
最后,用命令确认一下证书是否真的续到了100年后:
kubeadm certs check-expiration

2. 反转来了:CA证书根本没变
仔细看上面检查结果的截图,是不是发现了问题?组件证书的有效期确实遥遥无期了,但CA证书的过期时间,怎么还是9年多以后?
明明在配置文件里把 caCertificateValidityPeriod 也设成了100年,为什么它没生效?
这里就触及了Kubernetes kubeadm工具一个不太为人所知的“隐藏机制”:
kubeadm certs renew命令只会更新由CA签发的“子证书”,而不会去更新“CA证书”本身。
换句话说,刚才那一通操作,只是用那个“旧的CA”重新签发了一批“新的长期子证书”。我们并没有,实际上用常规方法也很难,去创建一个全新的“百年CA”。
3. 为什么 kubeadm 不让你改 CA?
原因其实很直接:CA证书是整个集群的“信任根”。所有的组件证书都由它签发,并被其他组件信任。这个根一旦被替换,就像给一座大楼突然换掉地基,风险极高。
贸然更换CA,很可能导致一连串的灾难性后果:kubelet全部掉线、apiserver拒绝请求、etcd集群通信失败,最终整个集群崩溃。这并非危言耸听,而是不少人在早期实践中踩过的真实大坑。
所以,kubeadm设计团队的选择显得非常谨慎,甚至可以说是一种“防御性哲学”:
宁可让你的证书过期报警,给你时间去处理,也绝不提供一个能一键把集群干翻的“危险捷径”。
4. 那这个参数到底什么时候生效?
你可能会问,配置文件里那个 caCertificateValidityPeriod: 876000h 难道是摆设吗?
当然不是。这个参数有它生效的严格时机:它只在创建CA的时候起作用,具体来说,就是在你执行 kubeadm init 初始化一个全新集群的那一刻。对于已经运行中的集群,这个参数在证书更新操作中是不会被读取的。
5. 真正的最佳实践
说到底,大家想改100年,核心诉求就是怕忘记,想省心,不愿意每年都提心吊胆地操作一次。
基于这个出发点,这里提供两个在生产环境中更常用、也更稳妥的策略。
方案一:自动轮转(强烈推荐)
这是最合规、也最安全的方式。我们不追求“永久”,而是追求“无感”。
- 基本操作:每年手动或自动执行一次
kubeadm certs renew all来续期证书。 - 进阶自动化:配合CronJob或系统的定时任务,每半年或每9个月自动执行一次续期命令,并重启kubelet。例如,在crontab中加入:
0 3 1 */6 * kubeadm certs renew all && systemctl restart kubelet
这样,证书永远在过期前就被刷新,你几乎感觉不到它的存在。
方案二:合理延长(适用于新集群)
如果你正在部署一个全新的、对稳定性要求极高且变更不频繁的测试或边缘环境集群,可以在初始化时(kubeadm init)的配置文件中,就将证书有效期设置为一个较长的、合理的值,比如5年或10年。这能在保证安全的前提下,大幅降低维护频率。
话说回来,运维工作的精髓往往不在于寻找一劳永逸的“黑魔法”,而在于建立可靠、自动化的流程。处理好证书生命周期管理,你的K8s集群就向稳健运行迈出了一大步。
相关攻略
为什么Nacos要把下线的服务直接“删掉”? 做Spring Cloud开发,Nacos几乎是标配。配置好地址,服务一启动,注册就完成了,流程丝滑得很。 但细心的开发者可能会发现一个“不一样”的地方:当你把服务停掉,甚至是直接“杀”掉进程,Nacos控制台上的对应实例,往往很快就会消失。它不是变成红
一次性将Kubernetes集群证书续期100年?先别急,小心这个“隐藏”的坑 相信不少运维同学都遇到过这样的头疼事:Kubernetes集群运行得好好的,突然某天就“失联”了。一查日志,证书过期。这事儿还真不是小概率事件,因为K8s默认颁发的组件证书有效期只有一年。一旦几个关键证书(比如apise
大家在 K8s 环境下用 Nacos,建议就保持默认配置,不要手动去开持久化模式,否则你的控制台里可能会留下一堆清理不掉的无效数据。 做 Spring Cloud 开发的同学,对 Nacos 肯定不
K8S 节点挂了能不能恢复数据,取决于数据存在哪。 Pod 里或节点本地的,基本没法恢复; 用 PVC 接远端存储的,节点换了 Pod 重建,数据自然还在。 交流群中一个用户问了一个很有价值的问题:
当我不再把 Kubernetes 看作一个可以自动扩展的神奇黑盒子时,我开始发现你能想象到的所有方面都存在臃肿:空闲工作负载、过大的 Pod、大量的日志记录以及实际上没有扩展的自动扩缩器。 我以前认
热门专题
热门推荐
Lemonaid是什么 如果你正为音乐创作寻找得力助手,那么Lemonaid很可能就是答案。它是一款专门面向专业音乐人打造的AI音乐生成工具,核心能力在于自主生成包含完整旋律、和声与节奏的乐曲。无论是想要一段氛围感十足的背景音乐,还是为具体场景定制配乐,它都能提供高度逼真且质量上乘的作品。工具提供了
苹果也要出折叠屏,传闻已经有几年了,从目前供应链、分析师与知名爆料者释放的信息来看,这款与市面大折都不一样的阔折叠似乎已经蓄势待发,大概率今年下半年就要正式面市。今天我们就来为大家汇总一波,没准儿就有你想知道的消息。 关于苹果折叠屏手机的传闻,已经流传了好几年。如今,综合供应链、分析师以及各路知名爆
《刺客信条:黑旗重制版》官宣之际,这款新海盗游戏为何能抢先赢得玩家口碑? 当游戏界的焦点都集中在《刺客信条:黑旗重制版》的正式公布时,一款名为《风启之旅》(Windrose)的开放世界海盗生存建造游戏,却凭借其过硬的品质与独特的玩法融合,悄然在玩家社区中掀起热议。这款由乌兹别克斯坦团队Kraken
产品介绍 提到云端智能视频创作,腾讯智影是一个绕不开的名字。这款由腾讯推出的平台,本质上是一个一站式的在线视频工厂,集成了从素材挖掘、剪辑、渲染到最终发布的全链路功能,旨在为用户提供全方位的视频创作解决方案。更吸引人的是,它不仅免费开放,还深度整合了多项前沿AI技术,目标很明确:让视频化表达这件事,
《王者荣耀世界》线下活动风波:合影互动引争议,职业素养与网络舆论深度探讨 近日,《王者荣耀世界》的一场线下玩家见面会,因台上一次短暂的合影互动,意外成为全网热议的焦点。活动中,一位男粉丝上台与角色扮演者(Coser)合影时,主动做出比心手势以示友好,却未得到身旁Coser的任何回应。男生举着手势在原





