1.首先我们查看当前证书有效期,有几种方式可以查询
第一种方式:
kubeadm alpha certs check-expiration
第二种方式:
cd /etc/kubernetes/pki for i in $(ls *.crt); do echo "===== $i ====="; openssl x509 -in $i -text -noout | grep -A 3 'Validity' ; done
2.证书有效期修改
首先安装golang,下载地址是https://golang.google.cn/dl/,现在最新的版本是go1.18.2
wget https://studygolang.com/dl/golang/go1.18.2.linux-amd64.tar.gz tar -zxvf go1.18.2.linux-amd64.tar.gz -C /usr/local/
添加环境变量
echo "export PATH=$PATH:/usr/local/go/bin" >>/etc/profile source /etc/profile
查看安装是否成功
go version go version go1.18.2 linux/amd64
下载k8s源码,首先查看自己环境的k8s版本
kubectl get node
查看到本地的是v1.18.15这个版本
去github上拉取源码,地址是https://github.com/kubernetes/kubernetes
选好自己的版本然后下载
wget https://github.com/kubernetes/kubernetes/archive/refs/heads/release-1.18.zip unzip release-1.18.zip #解压
进入K8s源码文件
cd kubernetes-release-1.18
修改有效期主要修改两个文件constants.go和cert.go
修改constants.go文件
vi cmd/kubeadm/app/constants/constants.go
找到关键字CertificateValidity,大概在49行
CertificateValidity = time.Hour * 24 * 365 #修改为 CertificateValidity = time.Hour * 24 * 365 * 10
这样就加了10年,接着我们修改cert.go文件
vi staging/src/k8s.io/client-go/util/cert/cert.go
找到关键字NotAfter:,大概在66行
NotAfter: now.Add(duration365d * 10).UTC(),
默认就是10年,我们本来只需要10年,这里不需要修改
这两个改好了,我们就可以编译源码了。
cd /root/kubernetes-release-1.18
开始编译
make WHAT=cmd/kubeadm GOFLAGS=-v
编译完后查看结果,就可以看到生成的kubeadm二进文件,在_output/bin/目录下
ls -l /root/kubernetes-release-1.18/_output/bin/
接着我们更换master节点的kubeadm
cp /usr/bin/kubeadm /usr/bin/kubeadm_bak /root/kubernetes-release-1.18/_output/bin/kubeadm /usr/bin/kubeadm
kubeadn更换以后再把证书更新下
cd /etc/kubernetes cp -R pki pki_bak #备份 kubeadm alpha certs renew all #更新证书 kubeadm alpha certs check-expiration #然后再次验证证书时间
我们可以看到已经更新到了2032年5月28日了,这样证书有效期修改就成功了。
我要评论