1、查看证书信息
默认安装后的集群,查看证书信息默认是1年,超过时间后服务会不可用,可以通过重新编译kubeadm二进制文件并替换。
kubeadm certs check-expiration
查看默认安装的kubeadm版本,通过获取到的信息使用相同的环境。
kubeadm version
#显示信息如下:
kubeadm version: &version.Info
{
Major:"1", Minor:"28",
GitVersion:"v1.28.15", #版本号
GitCommit:"841856557ef0f6a399096c42635d114d6f2cf7f4",
GitTreeState:"clean",
BuildDate:"2024-10-22T20:33:16Z", #编译的日期
GoVersion:"go1.22.8", #go语言使用的版本
Compiler:"gc",
Platform:"linux/amd64"
}
2、下载源码
可以git工具或者网页下载,在浏览器打开网页(https://github.com/kubernetes/kubernetes/tags),选择对应的版本。或使用git方式如下:
#克隆代码
git clone https://github.com/kubernetes/kubernetes.git
#选择 branch
cd kubernetes
git checkout -b remotes/origin/release-1.28 v1.28.15
3、编译环境
yum install -y make
# 使用1.22.8版本的原因参考默认安装的kubeamd的版本信息。
wget https://dl.google.com/go/go1.22.8.linux-amd64.tar.gz
mkdir -p /opt/svr/
tar -xzf go1.22.8.linux-amd64.tar.gz -C /opt/svr/
echo "export PATH=\$PATH:/opt/svr/go/bin" >> ~/.bashrc
source ~/.bashrc
go version
4、修改代码
cd kubernetes-1.28.15
vi cmd/kubeadm/app/constants/constants.go
#修改以下内容
CertificateValidity = time.Hour * 24 * 365 * 100 // 设置为100年
vi staging/src/k8s.io/client-go/util/cert/cert.go
#修改以下内容
NotAfter: now.Add(duration365d * 100).UTC(), // 设置为100年
#查看修改是否成功
cat ./staging/src/k8s.io/client-go/util/cert/cert.go | grep NotAfter
cat ./cmd/kubeadm/app/constants/constants.go | grep CertificateValidity
5、系统编译
make WHAT=cmd/kubeadm GOFLAGS=-v
cd _output/bin
# 验证版本
./kubeadm version
6、更新证书
#替换程序
mv /usr/bin/kubeadm /usr/bin/kubeadm_bak
cp ./_output/bin/kubeadm /usr/bin/kubeadm
chmod +x /usr/bin/kubeadm
#替换证书
kubeadm certs renew all
#查看证书
kubeadm certs check-expiration