[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
查看當(dāng)前證書時間
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 默認(rèn)一年 time.Hour * 24 * 365 * 100 換成100年
安裝編譯環(huán)境
Kubernetes編譯依賴Go環(huán)境和gcc
1贯吓、gcc安裝
# Centos7下gcc可以直接使用yum安裝(默認(rèn)已安裝趾浅,更新)
yum -y install gcc
2赚导、go環(huán)境安裝
go語言中文網(wǎng)(里面下載最新穩(wěn)定版)
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 #進(jìn)入源碼目錄
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 ../ #靜態(tài)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