天行健,君子以自强不息;地势坤,君子以厚德载物;

Kubernetes--1.24.3集群更换100年证书

初始化集群前修改

克隆并修改源码

git clone -b v1.24.3 --depth=1 https://github.com/kubernetes/kubernetes.git

sed -ri 's#time.Hour \* 24 \* 365#time.Hour \* 24 \* 365 \* 100#' ~/kubernetes/cmd/kubeadm/app/constants/constants.go

time.Hour * 24 * 365 默认一年

time.Hour * 24 * 365 * 100 换成100年

Kubernetes编译依赖Go环境和gcc

只需要单独编译kubeadm

cd ~/kubernetes #进入源码目录

make WHAT=cmd/kubeadm

编译完生成_output目录

cd _output/bin

./kubeadm version

替换kubeadm

cp /usr/bin/kubeadm{,.bak}

cp kubeadm /usr/bin/kubeadm

现有集群更换

检查证书过期时间

# For kubeadm provisioned clusters
kubeadm certs check-expiration

# For all clusters
cd /etc/kubernetes/pki
openssl x509 -noout -dates -in /etc/kubernetes/pki/apiserver.crt

查看当前证书时间

for item in `find /etc/kubernetes/pki -maxdepth 2 -name "*.crt"`;do echo ======================$item===================;openssl x509 -in $item -text -noout| grep Not;done

替换和生成新的证书前做下备份

cp -r /etc/kubernetes/pki{,.bak}

重新生成证书

cd /etc/kubernetes/pki

kubeadm certs renew all

查看证书时间是否成功更换100年

kubeadm certs check-expiration

所有根证书:ca、etcd-ca、front-proxy-ca只有在init初始化的时候才会更新时间

更新kubeconfig文件并更新其他证书

# 更新kubeconfig文件
kubeadm init phase kubeconfig all

# 将新生成的 admin 配置文件覆盖掉原本的 admin 文件
mv $HOME/.kube/config $HOME/.kube/config.old
cp -i /etc/kubernetes/admin.conf $HOME/.kube/config
chown $(id -u):$(id -g) $HOME/.kube/config

# 完成后重启 kube-apiserver、kube-controller、kube-scheduler、etcd 这4个容器即可,我们可以查看 apiserver 的证书的有效期来验证是否更新成功

mv /etc/kubernetes/manifests/*.yaml ../ #静态pod方式重启
mv /etc/kubernetes/*.yaml /etc/kubernetes/manifests

# 验证apiserver的证书的有效期
echo | openssl s_client -showcerts -connect 127.0.0.1:6443 -servername api 2>/dev/null | openssl x509 -noout -enddate

kubeadm certs check-expiration

 

点赞

发表回复