K8S证书转化为100年

547次阅读
没有评论
K8S 证书转化为 100 年

Table of Contents

前情提要

在我们的生产环境中,如果某一天 kubectl 命令不能用了

这时候还需要更新程序,会让人变得非常焦急

我有幸遇到过两次。一次测试环境,一次生产环境。

来的让人无所适从。所以今天一步到位,直接从源码上入手,直接把证书续期到 100 年 (源码正常是每次续期 1 年,但是 1 年后到期让人很烦)。

开始安装

克隆代码

首先需要将 kubernetes 的源代码克隆下来,当然如果你知道自己 kubeadm 的版本,可以克隆特定版本的代码,源码文件比较大,可能会耗费五六分钟

git clone https://github.com/kubernetes/kubernetes.git
K8S 证书转化为 100 年

之后我们需要知道当前 kubeadm 命令的版本

kubeadm version
#这里获取到我们当前的代码是:v1.23.6

#这里是将本地代码分支切换到 v1.23.6 里
cd /kubernetes && git checkout -b remotes/origin v1.23.6
K8S 证书转化为 100 年

修改代码

vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go
#如下图中,652 行的 kubeadmconstants.CertificateValidity 修改为 time.Hour*24*365*100
K8S 证书转化为 100 年
修改前
K8S 证书转化为 100 年
修改后

编译代码

make WHAT=cmd/kubeadm GOFLAGS=-v

这个时间比较长,大概十几分钟,大家耐心等待即可

替换 kubeadm 命令

 重新编译后的 kubeadm 会放在_output/bin/kubeadm
cp _output/bin/kubeadm /usr/bin/

chmod a+x /usr/bin/kubeadm #赋予执行权限 

备份证书、生成证树

cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak
#重新生成证书,这里的 yaml 文件是初始化 k8s 时留存的
kubeadm certs renew all --config /root/init-k8s/kubeadm-config.yaml

查看证书时间

kubeadm certs check-expiration
K8S 证书转化为 100 年

这里可以看到证书已经 100 年了

重启一下必要的组件

docker ps | grep -E 'k8s_kube-apiserver|k8s_kube-controller-manager|k8s_kube-scheduler|k8s_etcd_etcd' | awk -F '''{print $1}' | xargs docker restart

后记

建议大家在第一次初始化的时候就改一下证书时间,避免证书到期,造成不必要的麻烦

正文完
 
评论(没有评论)