kops etcd证书过期问题

本文介绍了etcd-manager在Kubernetes集群中的角色,它负责管理etcd集群的证书,尤其是如何处理证书过期的问题。当证书接近一年有效期时,如果不手动处理,apiserver将无法访问etcd。解决方案是删除etcd证书目录并重启etcd-manager容器以触发证书的自动重新签发。此外,还提供了检查证书过期时间的方法以及kops相关配置的关键参数。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

前言

etcd-manager 在云或裸机上管理 etcd 集群。它借鉴了 etcd-operator 的思想,但避免了依赖 kubernetes(本身依赖 etcd)的循环依赖。

当 etcd-manager 首次启动时,它会为每个主节点颁发证书。这些证书的硬编码期限为一年。如果证书过期,apiserver 将无法再访问本地 etcd 成员。

etcd-manager 首次在 Kops 1.12 中引入,该版本于 2019 年 5 月 15 日发布。这意味着,如果你升级了1.12以上的版本,并且不知道这个特性,那么在一年期满后将会遇到etcd终端的情况。

kops中etcd-manager相关配置

关键参数解释

#执行操作查看集群配置
kops get cluster -oyaml --full

  etcdClusters:
  - backups:
      backupStore: s3://your_bucket_name/your_cluster_name/backups/etcd/main
    cpuRequest: 200m
    enableEtcdTLS: true
    enableTLSAuth: true
    etcdMembers:
    - instanceGroup: master-me-south-1a
      name: a
    - instanceGroup: master-me-south-1b
      name: b
    - instanceGroup: master-me-south-1c
      name: c
    manager: {}
    memoryRequest: 100Mi
    name: main
    provider: Manager
    version: 3.2.24
  - backups:
      backupStore: s3://your_bucket_name/your_cluster_name/backups/etcd/events
    cpuRequest: 100m
    enableEtcdTLS: true
    enableTLSAuth: true
    etcdMembers:
    - instanceGroup: master-me-south-1a
      name: a
    - instanceGroup: master-me-south-1b
      name: b
    - instanceGroup: master-me-south-1c
      name: c
    manager: {}
    memoryRequest: 100Mi
    name: events
    provider: Manager
    version: 3.2.24

Provider: Manager        #此参数指定etcd集群使用etcd-manager。有两个可选参数Manager、Legacy。Legacy为传统模式,既不启动etcd-manager。

此解释在kops的官方文档暂时没有找到明确说明的地方,不过通过查看kops的go语言文档不难看出其意思。

etcd自签证书文件存放位置

etcd一年期自签证书查询过期时间

#宿主机路径
openssl x509 -in /etc/kubernetes/pki/kube-apiserver/etcd-client.crt -noout -dates

#etcd docker容器内路径
openssl x509 -in /rootfs/etc/kubernetes/pki/kube-apiserver/etcd-client.crt -noout -dates

其他一些证书路径:/mnt/master-vol-0*/pki/*/clients/*.crt

查看证书过期时间

for i in `ls /mnt/master-vol-*/pki/*/clients/*.crt`;do echo ====$i====;openssl x509 -in $i -noout -dates;done

etcd-manager自签证书过期解决办法

根据kops开源项目github上的issue中提供的方法的描述。

只要将etcd证书存放的pki目录删除,然后重启etcd的docker。就会自动重新签发证书。

其实这里的rm删除操作,是用mv将文件备份更为合适。

#SSH 到每个主实例并从每个卷挂载中删除 pki 目录:
sudo mv /mnt/master-vol-*/pki /mnt/master-vol-*/pki-bak

#重启两个 etcd-manager 容器。或者,您可以重启实例或终止自动缩放组中的实例
sudo docker restart $(sudo docker ps -q -f "label=io.kubernetes.container.name=etcd-manager")

参考文档

etcd-manager github:https://github.com/kopeio/etcd-manager

kops godoc:kops package - k8s.io/kops/pkg/apis/kops - pkg.go.dev

etcd-manager证书问题issue:https://github.com/kubernetes/kops/issues/8959

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值