k8s配置kubelet证书自动续期

Kubernetes 证书自动续期配置

对于已经安装的 Kubernetes 集群,可以通过配置 rotate-certificates 参数实现 kubelet 客户端证书的自动续期。以下是详细实现方法:

1. 确认当前 kubelet 配置

首先检查 kubelet 当前是否已启用证书自动续期:

ps -ef | grep kubelet | grep rotate-certificates

或者查看 kubelet 配置文件(通常位于 /var/lib/kubelet/config.yaml/etc/kubernetes/kubelet.conf):

grep rotateCertificates /var/lib/kubelet/config.yaml

2. 启用证书自动续期

对于 systemd 管理的 kubelet

  1. 编辑 kubelet 服务配置文件:
sudo vi /etc/systemd/system/kubelet.service.d/10-kubeadm.conf
  1. ExecStart 命令中添加或修改以下参数:
--rotate-certificates=true \
--cert-dir=/var/lib/kubelet/pki \
--feature-gates=RotateKubeletServerCertificate=true

完整示例:

ExecStart=/usr/bin/kubelet \
  $KUBELET_KUBECONFIG_ARGS \
  $KUBELET_CONFIG_ARGS \
  $KUBELET_KUBEADM_ARGS \
  $KUBELET_EXTRA_ARGS \
  --rotate-certificates=true \
  --cert-dir=/var/lib/kubelet/pki \
  --feature-gates=RotateKubeletServerCertificate=true
  1. 重新加载并重启 kubelet:
sudo systemctl daemon-reload
sudo systemctl restart kubelet

对于 kubeadm 部署的集群

kubeadm 从 1.15 版本开始默认启用客户端证书自动续期,你只需确保:

  1. 检查 kubeadm 配置:
kubeadm config view | grep certificate
  1. 如果需要修改,可以导出配置:
kubeadm config print init-defaults > kubeadm-config.yaml

然后编辑该文件,确保有以下内容:

apiVersion: kubeadm.k8s.io/v1beta3
kind: ClusterConfiguration
controllerManager:
  extraArgs:
    cluster-signing-duration: 87600h # 10年有效期
    feature-gates: RotateKubeletServerCertificate=true

3. 验证自动续期功能

  1. 检查 kubelet 当前使用的证书:
ls -l /var/lib/kubelet/pki/
  1. 查看证书过期时间:
openssl x509 -in /var/lib/kubelet/pki/kubelet-client-current.pem -noout -dates
  1. 观察证书续期日志:
journalctl -u kubelet -f | grep certificate

4. 其他相关配置

为了确保自动续期正常工作,还需要以下配置:

  1. Controller Manager 配置

    • 确保 controller manager 启用了证书签名功能
    • 相关参数:
      --cluster-signing-cert-file=/etc/kubernetes/pki/ca.crt
      --cluster-signing-key-file=/etc/kubernetes/pki/ca.key
      --feature-gates=RotateKubeletServerCertificate=true
      
  2. RBAC 权限
    确保 system:node 组有更新证书的权限:

apiVersion: rbac.authorization.k8s.io/v1
kind: ClusterRoleBinding
metadata:
  name: auto-approve-renewals-for-nodes
subjects:
- kind: Group
  name: system:nodes
  apiGroup: rbac.authorization.k8s.io
roleRef:
  kind: ClusterRole
  name: system:certificates.k8s.io:certificatesigningrequests:selfnodeclient
  apiGroup: rbac.authorization.k8s.io

5. 注意事项

  1. 自动续期仅适用于 kubelet 客户端证书(kubelet-client-current.pem)
  2. 服务器证书(kubelet.crt)需要额外配置 RotateKubeletServerCertificate 特性门控
  3. 主控制平面组件(apiserver、controller-manager、scheduler)的证书不适用此自动续期机制
  4. 证书续期依赖于集群的证书签名请求 (CSR) 审批机制正常工作

通过以上配置,kubelet 会在证书到期前自动创建新的证书签名请求,并由 Kubernetes 自动审批,实现无缝证书轮换。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

学亮编程手记

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

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

余额充值