Kubernetes kubeadm 中如何正确配置 Kubelet 的 serverTLSBootstrap 参数
在 Kubernetes 集群管理中,kubelet 组件的证书管理是一个关键的安全配置环节。当我们需要为 kubelet 启用服务端证书自动轮换功能时,serverTLSBootstrap 参数的配置就显得尤为重要。
配置背景
serverTLSBootstrap 参数控制着 kubelet 服务端证书的自动引导机制。当设置为 true 时,kubelet 会通过 certificates.k8s.io API 自动请求服务端证书。这对于提升集群安全性、实现证书自动轮换非常有用。
正确配置方法
在 kubeadm 管理的集群中,我们需要通过修改 kubelet 的 ConfigMap 来启用此功能。正确的配置格式如下:
apiVersion: kubelet.config.k8s.io/v1beta1
kind: KubeletConfiguration
serverTLSBootstrap: true
...
这个配置需要放置在 kube-system 命名空间下的 kubelet-config ConfigMap 的 data.kubelet 字段中。注意这是一个完整的 KubeletConfiguration 结构,serverTLSBootstrap 是其中的一个顶级字段,而不是 kind 字段的子属性。
实际操作步骤
- 获取当前的 kubelet 配置:
kubectl -n kube-system get configmap kubelet-config -o yaml
-
编辑配置,在 KubeletConfiguration 结构体顶层添加 serverTLSBootstrap: true 字段
-
应用修改后的配置:
kubectl apply -f modified-kubelet-config.yaml
-
在每个节点上,还需要修改 /var/lib/kubelet/config.yaml 文件,添加相同的配置
-
重启 kubelet 服务使配置生效:
systemctl restart kubelet
注意事项
启用此功能后,kubelet 生成的证书签名请求(CSR)默认不会被自动批准。管理员需要手动批准这些 CSR,或者部署专门的控制器来自动处理。这是 Kubernetes 出于安全考虑的设计,确保服务端证书的签发过程受到严格控制。
对于生产环境,建议在启用此功能前充分测试,并确保有完善的证书管理流程。同时要注意,不同 Kubernetes 版本可能在配置细节上略有差异,建议查阅对应版本的官方文档确认具体参数格式。
通过正确配置 serverTLSBootstrap 参数,我们可以实现 kubelet 服务端证书的自动化管理,既提升了安全性,又减少了人工维护的工作量。