咨询下 k8 大佬一些问题

2023 年 4 月 14 日
 jackgoudan

k8s 老集群的根 ca 证书即将到期,但是上面重要业务还不少,如何处理证书到期问题?

  1. 手动更新各种证书,看 k8s 文档手动更新所有证书的工作量属实也不少,在我看来和业务重建没啥区别了?
  2. 停机更新维护,可能部好推动,涉及的人可能有些多,但是是相对稳妥。
4514 次点击
所在节点    Kubernetes
38 条回复
kindom
2023 年 4 月 14 日
cert-manager?
jackgoudan
2023 年 4 月 14 日
@kindom 没用过这个,主要问题是更新了证书后各种组件重建对现有的服务可能影响很大,同事也没搞过这个,不好评估影响范围。
jingkong
2023 年 4 月 14 日
把业务迁移到一个 新集群上去。。。。。。。。
defunct9
2023 年 4 月 14 日
续订就完事了
asilin
2023 年 4 月 14 日
根证书默认是 10 年有效期,我猜你大概率是 CA 签发的服务证书到期了,这个是默认 1 年有效期

如何更新 CA 签发的服务证书?在每个 master 节点执行下面的命令即可自动续期并生效:
——————————————————————————————————————————
kubeadm certs renew all
kubectl -n kube-system delete pod -l 'component=kube-apiserver'
kubectl -n kube-system delete pod -l 'component=kube-controller-manager'
kubectl -n kube-system delete pod -l 'component=kube-scheduler'
kubectl -n kube-system delete pod -l 'component=etcd'
——————————————————————————————————————————
YOOHUU
2023 年 4 月 14 日
ca 不是 10 年有效期吗?
jackgoudan
2023 年 4 月 14 日
@asilin 不是这个,是的你没看错就是根 ca 到期了,一批相当老的集群初建是根 ca 设置了 5 年
hzfyjgw
2023 年 4 月 14 日
jackgoudan
2023 年 4 月 14 日
@DAPTX4869 好老的集群了,而且初建集群时同事设置了 5 年,这会都要到了。
dancercl
2023 年 4 月 14 日
@kindom 我觉得他说的是 k8s server 和 agent API TLS 的证书,不是里边运行的服务的证书。
jackgoudan
2023 年 4 月 14 日
和大家澄清下,不是 apiserver.crt 等这种二级证书,是 ca.crt 这个根证书。
asilin
2023 年 4 月 14 日
@jackgoudan 那就和 kubernetes 没关系了,相当于业务服务的跨主机迁移,让运维同学来操作后续事宜吧。
jackgoudan
2023 年 4 月 14 日
看了下文档更新 ca 的流程: https://kubernetes.io/docs/tasks/tls/manual-rotation-of-ca-certificates/ 内容也不少
Judoon
2023 年 4 月 14 日
你确定是根 ca 过期?
各种集群初始化创建工具自签证书时,ca 都是 100 年起步的。倒是通过根 ca 签给 etcd 或者 kubelet 等组件的时候大概率会只有一年。看你怎么创建的集群,kubeadm 的话,一般可以通过 kubeadm certs renew 去更新

其他的话,自己逐个替换证书,挺烦的,容易出错
NeroKamin
2023 年 4 月 14 日
@defunct9 老哥,你咋不让他开 SSH 你上去看看了
jackgoudan
2023 年 4 月 14 日
@Judoon 是呀,耳机证书过期了 renew 下就完了,没必要上论坛了。hh
ysicing
2023 年 4 月 14 日
@NeroKamin 估计 ssh 哥嫌麻烦哈哈哈
feedcode
2023 年 4 月 14 日
证书签名是公钥签的,所以你只需要更新 ca.crt 就可以了,不需要更新二级根证书和各个服务的证书

# 更新 ca.crt
openssl x509 -x509toreq -in ca.crt -signkey ca.key -out new-server.csr
openssl x509 -req -days 3650 -in new-server.csr -signkey ca.key -out new-cacert.pem

# 验证,老的 ca.crt 和新的 new-cacert.pem 都是可以通过的
openssl verify -CAfile new-cacert.pem -verbose server.crt
openssl verify -CAfile ca.crt -verbose server.crt

只需要把 new-cacert.pem 替换成 ca.crt , 然后每个 node 都重启下就 ok 了
defunct9
2023 年 4 月 14 日
最烦换证书,就不登了 @NeroKamin
YOOHUU
2023 年 4 月 14 日
@feedcode #18 等 OP 测试结果

这是一个专为移动设备优化的页面(即为了让你能够在 Google 搜索结果里秒开这个页面),如果你希望参与 V2EX 社区的讨论,你可以继续到 V2EX 上打开本讨论主题的完整版本。

https://study.congcong.us/t/932533

V2EX 是创意工作者们的社区,是一个分享自己正在做的有趣事物、交流想法,可以遇见新朋友甚至新机会的地方。

V2EX is a community of developers, designers and creative people.

© 2021 V2EX