Kubeadm修改证书时间

前言



目前关于k8s的部署有着各种各样工具,其中不得不提到Kubeadm。虽然其因证书问题一直被人们所诟病,但它也是部署k8s最常用的工具之一。

我们都知道使用kubeadm部署k8s在证书方面存在一个问题。证书有效期为一年,到期前必须续期。因此如果正式使用kubeadm部署的集群,迟早得抽出某一天的晚上去升级证书。当然kubeadm也是有命令可以达到续签证书的目的,但是如果要你某一天抽出时间去升级一个正在运行中的k8s集群的证书,你慌不慌。升级完,还得验证服务有没有受到影响。因此有一种方法可以修改kubeadm,来调整证书签发后的有效时间。

以下方法已在 1.17.2 1.17.3 1.17.4 1.20.4 中验证。



下载源码包



建议在部署k8s的初始阶段,对于kubeadm不要直接用yum,apt-get等方式进行安装,建议下载源码包,而kubelet kubectl无需源码安装。



git下载

git clone https://github.com/kubernetes/kubernetes.git
cd kubernetes
git checkout v1.17.3  (切换你要部署的版本)

or

wget下载
wget  https://github.com/kubernetes/kubernetes/archive/v1.17.3.tar.gz


调整配置文件



<1>

cd  kubernetes
vim cmd/kubeadm/app/constants/constants.go

可根据需求修改
Kubeadm修改证书时间



<2>

vim staging/src/k8s.io/client-go/util/cert/cert.go

可根据需求修改

Kubeadm修改证书时间
Kubeadm修改证书时间




安装go环境并编译



<1>也可源码安装

yum -y install go 


<2>编译kubeadm

make WHAT=cmd/kubeadm GOFLAGS=-v


补充:
编译kubelet
make all WHAT=cmd/kubelet GOFLAGS=-v
编译kubectl
make all WHAT=cmd/kubectl GOFLAGS=-v


<3>替换kubeadm文件

cp /usr/bin/kubeadm /usr/bin/kubeadm.old
cp _output/bin/kubeadm /usr/bin/kubeadm

备注:
如果是多个master,注意把kubeadm同步以下
scp -r /usr/bin/kubeadm master2:/usr/bin/
scp -r /usr/bin/kubeadm master3:/usr/bin/


<4>接着就可以使用kubeadm部署k8s了。
部署完成后,即可使用如下命令查看当前证书过期时间。


kubeadm alpha certs check-expiration

Kubeadm修改证书时间



补充



如果在此之前,已经使用其他方式安装的kubeadm,已生成证书并部署了k8s



更新证书过期时间
cp -r /etc/kubernetes/pki  /etc/kubernetes/pki.old
kubeadm alpha certs renew all --config=/root/kubeadm.yaml

替换老的config文件
cp -f /etc/kubernetes/admin.conf ~/.kube/config

如果是多个master,注意把证书同步一下
scp -r /kubernetes/pki/* master2:/kubernetes/pki/
scp -r /kubernetes/pki/* master3:/kubernetes/pki/


检查集群

kubeadm alpha certs check-expiration
kubectl get node
kubectl get pod -n kube-system


人工检查各功能
上一篇:详解 Mysql LEFT JOIN和JOIN查询区别及原理


下一篇:使用kubeadm快速部署一个K8s集群