当前位置:网站首页 > 容器化与Kubernetes > 正文

kubernetes证书过期(kubeadm 证书有效期更改)



出于安全考虑,k8s 团队推荐定期更新版本,因此kubeadm生成的证书,有效期默认在代码中写死为1年,一旦证书过期,k8s集群将会崩溃,因此,续期 or 升级,成了一个一年一度必选题。但在生产环境中,每一次版本更新可能存在未知的风险,给已经稳定运行的集群带来诸多不确定性,而每年续期一次证书,对管理不太友好,频繁手动操作也可能会带来额外的风险。去年部署的1.14的集群,证书快要到期了,现在决定修改kubeadm的源码重新编译,将续期证书的有效期进行延长。本篇记载分析源码中证书更新的过程。

准备

首先拉取代码,切换到指定k8s版本的tag,过程参考之前源码分析的第一篇文章:

k8s源码阅读笔记-准备工作

也可直接下载相应版本的源码压缩包:

代码结构

kubeadm代码结构如下,我们根据cmd命令入手,来找相应的生成证书的逻辑具体在哪。

50

证书生成方式分为两种,一种是执行命令初始化生成的证书,一种是执行,分别来看下。

Init证书

根据cmd的语义,可以很方便的找到相应的逻辑在哪个文件内,例如 命令的逻辑,在文件内。

通过函数名称,可以很容易辨认哪个是证书操作的函数,一级一级地查找:

==>

==>

==>

 

CreateFromCA函数分为两步,第一步生成证书 ,第二步,证书写入磁盘。生成证书这里使用的是单独的封装pkiutil.NewCertAndKey()方法,猜测多个地方会使用到它。

生成证书

==>

==>

 

这里是init证书默认定义有效期的位置,renew证书应该也是调用的这里,是不是呢?还是再来确认一下。

Renew证书

根据cmd的语义,可以很方便的找到相应的逻辑在哪个文件内,例如命令的逻辑,在文件内。

通过函数名称,可以很容易初步锁定在函数,再开始一级一级地查找:

==>

==>

 

==>

 

==>

 

这里发现impl.Renew()是个接口方法,倒回上一级去查看impl

==>

 

==>

 

这里的证书刷新方式分为两种,一种是k8s自管理式的证书,一种是本地文件证书(默认),两种方式有何差别,参考官方文档:

Certificate Management with kubeadm

自管理的证书有效期默认3个月。而一般使用的都是本地证书文件,所以直接看第二种

 

Renew方法在下面,果然,也是调用的 方法,也即是说,在上面修改那一行代码,init和renew的时候生成证书都会调用,都会生效。

修改完成,开始重新编译!

go环境问题这里不赘述了,网上文章很多,跳过。

如果是linux,直接执行:

 

如果是mac,执行:

 

报错:

 

解决办法:

 

重新编译,执行完成后,编译好的二进制文件路径为:

 

使用此文件,覆盖原来的kubeadm文件:

 

init新建证书

先看看kubeadm init时创建的证书

 

可以看到,证书有效期为10年(默认时间为UTC时间,实际本地时区为UTC+8)

renew刷新证书

下面的步骤适用于 证书续期证书过期后 的处理方法

过了一个晚上,再来对上面init创建的证书进行renew:

 

可以看到,renew的证书,有效期也是长达10年的。

到此这篇kubernetes证书过期(kubeadm 证书有效期更改)的文章就介绍到这了,更多相关内容请继续浏览下面的相关推荐文章,希望大家都能在编程的领域有一番成就!

版权声明


相关文章:

  • kvm虚拟化原理(kvm虚拟化分为哪三层)2025-07-09 10:00:05
  • 启动docker容器命令(docker启动容器命令解释)2025-07-09 10:00:05
  • kvm虚拟化技术原理(简述kvm虚拟化功能特性及优缺点?)2025-07-09 10:00:05
  • docker启动容器命令解释(docker容器启动过程)2025-07-09 10:00:05
  • 启动docker 容器(docker如何启动容器)2025-07-09 10:00:05
  • docker版本降级(docker容器降级)2025-07-09 10:00:05
  • kubernetes中kubelet主要功能(kubelet主要负责)2025-07-09 10:00:05
  • docker启动容器命令解释(docker 启动容器命令)2025-07-09 10:00:05
  • cruise软件汉化(cruise2019破解版安装教程)2025-07-09 10:00:05
  • k8s查看pod yaml(k8s查看pod 容器状态)2025-07-09 10:00:05
  • 全屏图片