一、重新编译kubeadm,生成新的证书

  查看证书的有效期

kubeadm alpha certs check-expiration

 

  一)编译kubeadm

  1、下载源码并切换指定分支

yum -y install git 
git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes && git checkout -b v1.19.15

  2、下载go的编译环境

  查看kube-cross的版本可以去源码文件的build\build-image\cross查看,具体命令为: 

cat

  使用docker镜像进行编译

https://hub.docker.com/r/wzshiming/kube-cross/tags  在dockerhub 下载相应的版本

docker pull gcrcontainer/kube-cross:v1.16.15-1
docker run --rm -v /root/kubernetes/:/go/src/k8s.io/kubernetes -it gcrcontainer/kube-cross:v1.16.15-1

  3、修改源码

vim ./staging/src/k8s.io/client-go/util/cert/cert.go
//此文件修改如下内容
maxAge := time.Hour * 24 * 365 * 100 #修改后 给证书期限为100年


vim ./cmd/kubeadm/app/constants/constants.go
//此文件修改如下内容
CertificateValidity = time.Hour * 24 * 365 * 100

  4、编译

# 切到换源码跟路径,编译kubeadm, 这里主要编译kubeadm 即可
make

  编译后的文件所在路径

./_output/local/bin/linux/amd64/kubeadm

  二)生成新的证书

  1、备份原来的证书和kubeadm

mkdir backups
cp /etc/kubernetes/pki/ backups/ -a
cp /usr/bin/kubeadm backups/ -a
cp

  2、备份完以后用新编译的文件覆盖掉以前的

#用源码包里的kubeadm覆盖掉以前的
\cp

  3、更新证书

kubeadm alpha certs renew all
#然后查看
kubeadm alpha certs check-expiration