[TOC]
k8s-1.24.0集群更换100年证书
检查证书过期时间
# 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 openssl x509 -in $item -text -noout| grep Not;echo ======================$item===================;done
kubeadm certs check-expiration
克隆并修改源码
git clone -b v1.24.0 --depth=1 https://github.com/kubernetes/kubernetes.git
git clone -b v1.24.0 --depth=1 https://hub.fastgit.xyz/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
1、gcc安装
# Centos7下gcc可以直接使用yum安装(默认已安装,更新)
yum -y install gcc
2、go环境安装
go语言中文网(里面下载最新稳定版)
wget https://studygolang.com/dl/golang/go1.18.2.linux-amd64.tar.gz
tar xf go1.18.2.linux-amd64.tar.gz -C /usr/local/
echo "PATH=/usr/local/go/bin:$PATH" >> /etc/profile
source /etc/profile
go version
只需要单独编译kubeadm
cd ~/kubernetes #进入源码目录
make WHAT=cmd/kubeadm
编译完生成_output目录
cd _output/bin
./kubeadm version
替换kubeadm
cp /usr/bin/kubeadm{,.bak}
cp kubeadm /usr/bin/kubeadm
替换和生成新的证书前做下备份
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