1、查看当前集群的证书时间,使用命令:
for i in /etc/kubernetes/pki/*.crt;do echo $i; openssl x509 -in $i -text -noout|egrep "Not Before|Not After";echo "-----------";done
或者使用命令openssl x509 -in apiserver.crt -text -noout
也可查看到证书时间(其中apiservr.crt代表的是API的证书,)
2、下载Go语言环境(可通过百度搜索go中文社区进行下载)
wget https://studygolang.com/dl/golang/go1.17.5.linux-amd64.tar.gz
3、解压Go安装包到/usr/local/下
tar -xvf go1.17.5.linux-amd64.tar.gz -C /usr/local/
4、将 export PATH=$PATH:/usr/local/go/bin
写入到/etc/profile
中
5、刷新环境变量配置文件生效
source /etc/profile
6、验证Go版本
go version ————>go version go1.17.5 linux/amd64
7、将K8S源码拉去到本地
git clone https://github.com/kubernetes/kubernetes.git
8、切换到指定的k8s版本
cd /kubernetes && git checkout -b remotes/origin/release-1.12 v1.22.4
#我这里K8S版本为V1.22.4 可通过kubeadm version
查询自己使用的版本
9、修改kubeadm源码包默认证书策略
vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go
将652行的kubeadmconstants.CertificateValidity
替换为time.Hour*24*365*100
10、重新编译kubeadm (过程耗时较长,耐心等待)
make WHAT=cmd/kubeadm GOFLAGS=-v
11、重新编译后的kubeadm会放在_output/bin/kubeadm,可将其先放在/root
下
cp _output/bin/kubeadm /root/
12、备份旧的kubeadm并将新的替换上
cp /usr/bin/kubeadm /usr/bin/kubeadm.bak
cp kubeadm /usr/bin/
#将新的kubeadm替换
chmod a+x /usr/bin/kubeadm
#赋予执行权限
13、备份旧的证书
cp -r /etc/kubernetes/pki /etc/kubernetes/pki.bak
14、重新生成证书
kubeadm alpha certs renew all --config= /root/init-k8s/kubeadm-config.yaml
#其中--config后面的文件代表初始化集群时用到的yaml文件