默认的证书是有年限的
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30
| [root@k8s-master ~] [root@k8s-master pki] apiserver.crt apiserver-kubelet-client.key devuser.kubeconfig front-proxy-client.crt apiserver-etcd-client.crt ca.crt devuser.pem front-proxy-client.key apiserver-etcd-client.key ca.key etcd sa.key apiserver.key devuser.csr front-proxy-ca.crt sa.pub apiserver-kubelet-client.crt devuser-key.pem front-proxy-ca.key [root@k8s-master pki] Certificate: Data: Version: 3 (0x2) Serial Number: 8026942590652842542 (0x6f656dc1f451022e) Signature Algorithm: sha256WithRSAEncryption Issuer: CN=kubernetes Validity Not Before: Jan 28 08:20:48 2020 GMT Not After : Jan 27 08:20:48 2021 GMT ... ...省略 ... [root@k8s-master pki] Certificate: Data: Version: 3 (0x2) Serial Number: 0 (0x0) Signature Algorithm: sha256WithRSAEncryption Issuer: CN=kubernetes Validity Not Before: Jan 28 08:20:48 2020 GMT Not After : Jan 25 08:20:48 2030 GMT
|
有些是一年,有些是10年
例如apiserver是1年,ca是10年
为什么是1年,老师说,可能是因为更新集群的时候会自动更新证书,如果1年内有更新集群,则不需要考虑证书到期,但是有些时候,离线业务并不会去手动更新集群
如果需要手动更改证书年限,需要改代码
1 首先需要先安装go语言环境
1 2 3 4 5 6 7 8 9 10
|
[root@k8s-master local] /usr/local [root@k8s-master local]
vi /etc/profile export PATH=$PATH:/usr/local/go/bin source /etc/profile
|
2 下载源码
1 2 3 4
| cd /data git clone https://github.com/kubernetes/kubernetes.git
kubeadm version git checkout -b remotes/origin/release-1.15.1 v1.15.1
|
这里如果是通过浏览器下载的话,直接下载对应版本的压缩包
3 修改kubeadm源码包更新证书策略
1 2 3 4 5 6 7 8 9 10
| vim staging/src/k8s.io/client-go/util//cert/cert.go vim cmd/kubeadm/app/util/pkiutil/pki_helpers.go
const duration365d = time.Hour * 24 * 365 const duration3650d = time.Hour * 24 * 365 * 10 // 新增 NotAfter: time.Now().Add(duration365d0).UTC(), // 修改
make WHAT=cmd/kubeadm GOFLAGS=-v cp _output/bin/kubeadm /root/kubeadm-new
|
1.14和1.15是通过修改这个文件,1.16、1.17就不确定了,可以查看官方文档
4 更新kubeadm
1 2 3 4
| cp /usr/bin/kubeadm /usr/bin/kubeadm.old cp /root/kubeadm-new /usr/bin/kubeadm chmod a+x /usr/bin/kubeadm
|
5 更新各个节点证书至Master节点
1 2 3 4 5 6 7
| # 首先备份pki目录 cp /etc/kubernetes/pki{,-bak} ## 更新所有证书日期 kukeadm alpha certs renew all --config=kubeadm-config.yaml ## 查看是否更新成功 openssl x509 -in apiserver.crt -text -noout
|