k8s证书续签
k8s证书续签10年
# 查看K8s有效期
openssl x509 -in /etc/kubernetes/pki/apiserver.crt -noout -text | grep Not
# 检查证书何时过期
kubeadm certs check-expiration
# 注: 更新证书只需要更新master节点,node节点不需要!!!
# 参考文档:https://www.strives.cn/archives/145/
1 续签证书一年
1. #查看证书有效期
kubeadm certs check-expiration
2. 更新证书前备份
# 备份kubernetes配置所有目录
cp -rp /etc/kubernetes /opt/kubernetes.bak20240629
# 备份原有证书
cp -rp /etc/kubernetes/pki/ /opt/pki.bak20240629
3. #续签证书
kubeadm certs renew all
4. #重启kubectl
systemctl restart kubelet.service
5. 更新admin配置
# couldn't get current server API group list: the server has asked for the client to provide credentials
cp -rp $HOME/.kube/config /opt/config.bak20240629
cp /etc/kubernetes/admin.conf $HOME/.kube/config
2 续签证书10年
2.1、查看当前证书时间
kubeadm certs check-expiration
2.2、下载K8S源码
git clone https://github.com/kubernetes/kubernetes.git
2.3、查看K8s版本
# kubectl version
2.4、切换版本修改源码
cd kubernetes
git checkout v1.27.2
git branch #查看当前版本分支
git branch -r #查看远程版本分支
vim cmd/kubeadm/app/constants/constants.go,找到CertificateValidity,修改如下
...
CertificateValidity = time.Hour * 24 * 365 * 10
...
vim staging/src/k8s.io/client-go/util/cert/cert.go
...
const duration365d = time.Hour * 24 * 365 * 10
...
vim hack/lib/version.sh #为了打包后kubeadm的版本不是脏版本(-dirty),脏版本的kubeadm不能升级
...
if git_status=$("${git[@]}" status --porcelain 2>/dev/null) && [[ -z ${git_status} ]]; then
KUBE_GIT_TREE_STATE="clean"
else
#KUBE_GIT_TREE_STATE="dirty"
KUBE_GIT_TREE_STATE="clean"
fi
...
2.5、安装编译软件
yum -y install gcc automake autoconf libtool make
安装go编译环境,这里就直接使用yum安装
查看go是否安装过
# go env
查看yum的Golang
# yum info golang
安装golang
yum install -y golang
再次查看go环境变量
# go env
2.6、编译
make WHAT=cmd/kubeadm
编译完会在当前目录生成二进制文件
# ll _output/bin #kubeadm
2.7、备份文件
将之前kubeadm 和K8s集群组件证书全部备份一下
1. cp /usr/bin/kubeadm /opt/yaml/kubeadm-init/kubeadm-old
2. cp -rp /etc/kubernetes/pki /opt/yaml/kubeadm-init/pki-old
2.8、替换二进制文件和重新生成证书
替换当前二进制文件
cp /opt/yaml/kubeadm-init/kubeadm-10y /usr/bin/kubeadm
重新生成证书文件
cd /etc/kubernetes/pki
kubeadm certs renew all
2.9、查看是否生效
# kubeadm certs check-expiration
重启kubelet,再次检查一下
systemctl restart kubelet.service
3.0、检查集群是否生效
# kubectl get node
3.1、让其整个集群master生效
将当前新编译好的kubeadm文件复制到其他节点上,然后再替换之前一定要备份好文件,然后重新生成证书,其他操作步骤如上述。
上传kubeadm-10y 到其它节点:/opt/kubeadm-10y
cp /usr/bin/kubeadm /opt/kubeadm-old
chmod 755 /opt/kubeadm-10y
cp /opt/kubeadm-10y /usr/bin/kubeadm
3 KubeClientCertificateExpiration
kubectl delete po -n kube-system kube-controller-manager-master2
kubectl delete po -n kube-system kube-scheduler-master2
本博客所有文章除特别声明外,均采用 CC BY-NC-SA 4.0 许可协议。转载请注明来自 悩姜!


