咨询下 k8 大佬一些问题

2023-04-14 15:10:44 +08:00
 jackgoudan

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

  1. 手动更新各种证书,看 k8s 文档手动更新所有证书的工作量属实也不少,在我看来和业务重建没啥区别了?
  2. 停机更新维护,可能部好推动,涉及的人可能有些多,但是是相对稳妥。
3276 次点击
所在节点    Kubernetes
38 条回复
kindom
2023-04-14 15:17:58 +08:00
cert-manager?
jackgoudan
2023-04-14 15:43:33 +08:00
@kindom 没用过这个,主要问题是更新了证书后各种组件重建对现有的服务可能影响很大,同事也没搞过这个,不好评估影响范围。
jingkong
2023-04-14 15:55:26 +08:00
把业务迁移到一个 新集群上去。。。。。。。。
defunct9
2023-04-14 15:57:05 +08:00
续订就完事了
asilin
2023-04-14 15:57:12 +08:00
根证书默认是 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'
——————————————————————————————————————————
DAPTX4869
2023-04-14 15:57:22 +08:00
ca 不是 10 年有效期吗?
jackgoudan
2023-04-14 15:58:06 +08:00
@asilin 不是这个,是的你没看错就是根 ca 到期了,一批相当老的集群初建是根 ca 设置了 5 年
hzfyjgw
2023-04-14 15:58:20 +08:00
jackgoudan
2023-04-14 15:58:36 +08:00
@DAPTX4869 好老的集群了,而且初建集群时同事设置了 5 年,这会都要到了。
dancercl
2023-04-14 15:58:57 +08:00
@kindom 我觉得他说的是 k8s server 和 agent API TLS 的证书,不是里边运行的服务的证书。
jackgoudan
2023-04-14 15:59:51 +08:00
和大家澄清下,不是 apiserver.crt 等这种二级证书,是 ca.crt 这个根证书。
asilin
2023-04-14 16:01:35 +08:00
@jackgoudan 那就和 kubernetes 没关系了,相当于业务服务的跨主机迁移,让运维同学来操作后续事宜吧。
jackgoudan
2023-04-14 16:01:52 +08:00
看了下文档更新 ca 的流程: https://kubernetes.io/docs/tasks/tls/manual-rotation-of-ca-certificates/ 内容也不少
Judoon
2023-04-14 16:07:56 +08:00
你确定是根 ca 过期?
各种集群初始化创建工具自签证书时,ca 都是 100 年起步的。倒是通过根 ca 签给 etcd 或者 kubelet 等组件的时候大概率会只有一年。看你怎么创建的集群,kubeadm 的话,一般可以通过 kubeadm certs renew 去更新

其他的话,自己逐个替换证书,挺烦的,容易出错
NeroKamin
2023-04-14 16:09:55 +08:00
@defunct9 老哥,你咋不让他开 SSH 你上去看看了
jackgoudan
2023-04-14 16:10:18 +08:00
@Judoon 是呀,耳机证书过期了 renew 下就完了,没必要上论坛了。hh
ysicing
2023-04-14 16:21:17 +08:00
@NeroKamin 估计 ssh 哥嫌麻烦哈哈哈
feedcode
2023-04-14 16:26:43 +08:00
证书签名是公钥签的,所以你只需要更新 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-04-14 16:32:37 +08:00
最烦换证书,就不登了 @NeroKamin
DAPTX4869
2023-04-14 16:52:46 +08:00
@feedcode #18 等 OP 测试结果

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

https://www.v2ex.com/t/932533

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

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

© 2021 V2EX