| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 59
 60
 61
 62
 63
 64
 65
 66
 67
 68
 69
 70
 71
 72
 73
 74
 75
 76
 77
 
 | 2.1、查看当前证书时间kubeadm certs check-expiration
 
 2.2、下载K8S源码
 git clone https://github.com/kubernetes/kubernetes.git
 
 2.3、查看K8s版本
 # kubectl version
 
 2.4、切换版本修改源码
 cd kubernetes
 git checkout v1.27.2
 git branch #查看当前版本分支
 git branch -r #查看远程版本分支
 
 vim cmd/kubeadm/app/constants/constants.go,找到CertificateValidity,修改如下
 ...
 CertificateValidity = time.Hour * 24 * 365 * 10
 ...
 vim staging/src/k8s.io/client-go/util/cert/cert.go
 ...
 const duration365d = time.Hour * 24 * 365 * 10
 ...
 vim hack/lib/version.sh  #为了打包后kubeadm的版本不是脏版本(-dirty),脏版本的kubeadm不能升级
 ...
 if git_status=$("${git[@]}" status --porcelain 2>/dev/null) && [[ -z ${git_status} ]]; then
 KUBE_GIT_TREE_STATE="clean"
 else
 #KUBE_GIT_TREE_STATE="dirty"
 KUBE_GIT_TREE_STATE="clean"
 fi
 ...
 
 2.5、安装编译软件
 yum -y install gcc automake autoconf libtool make
 
 安装go编译环境,这里就直接使用yum安装
 查看go是否安装过
 # go env
 查看yum的Golang
 # yum info golang
 安装golang
 yum install -y golang
 再次查看go环境变量
 # go env
 
 2.6、编译
 make WHAT=cmd/kubeadm
 编译完会在当前目录生成二进制文件
 # ll _output/bin
 
 2.7、备份文件
 将之前kubeadm 和K8s集群组件证书全部备份一下
 1. cp /usr/bin/kubeadm /opt/yaml/kubeadm-init/kubeadm-old
 2. cp -rp /etc/kubernetes/pki /opt/yaml/kubeadm-init/pki-old
 
 2.8、替换二进制文件和重新生成证书
 替换当前二进制文件
 cp /opt/yaml/kubeadm-init/kubeadm-10y /usr/bin/kubeadm
 重新生成证书文件
 cd /etc/kubernetes/pki
 kubeadm certs renew all
 
 2.9、查看是否生效
 # kubeadm certs check-expiration
 重启kubelet,再次检查一下
 systemctl restart kubelet.service
 
 3.0、检查集群是否生效
 # kubectl get node
 
 3.1、让其整个集群master生效
 将当前新编译好的kubeadm文件复制到其他节点上,然后再替换之前一定要备份好文件,然后重新生成证书,其他操作步骤如上述。
 上传kubeadm-10y 到其它节点:/opt/kubeadm-10y
 cp /usr/bin/kubeadm /opt/kubeadm-old
 chmod 755 /opt/kubeadm-10y
 cp /opt/kubeadm-10y /usr/bin/kubeadm
 
 |