1、安装go环境
wget https://golang.google.cn/dl/go1.16.8.linux-amd64.tar.gz
tar -C /usr/local -zxvf go1.16.8.linux-amd64.tar.gz
echo “export GO111MODULE=on” >> /etc/profile
echo “export GOROOT=/usr/local/go” >> /etc/profile
echo “export PATH=
P
A
T
H
:
PATH:
PATH:GOROOT/bin” >> /etc/profile
source /etc/profile
2、下载k8s源码(与需要更新永久证书的k8s集群版本一致)
wget https://github.com/kubernetes/kubernetes/archive/refs/tags/v1.22.10.tar.gz
3、编译新的kubeadm
修改cmd/kubeadm/app/util/pkiutil/pki_helpers.go文件,大概在653行
在上面添加:
const year100 = time.Hour * 24 * 365 * 100
notAfter := time.Now().Add(year100).UTC()
编译命令:
KUBE_BUILD_PLATFORMS=linux/amd64 make all WHAT=cmd/kubeadm GOFLAGS=-v GOGCFLAGS=“-N -l”
4、备份原来的kubeadm和证书文件,避免出错还原
cp /usr/local/bin/kubeadm /usr/local/bin/kubeadm_bak
cp -r /etc/kubernetes/pki /etc/kubernetes/pki_bak
5、将新编译的kubeadm复制到指定目录
cp kubeadm /usr/local/bin/
6、重新生成证书(如果有多个master,则每个master都需要重新生成证书)
kubeadm certs renew all
7、重启kubelet服务
systemctl restart kubelet
8、确认证书是否更新
kubeadm certs check-expiration