k8s-1.24.0集群更换100年证书

[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语言中文网(里面下载最新稳定版)

https://studygolang.com/dl

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
©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容