Kubernetes master节点kube-bench校验1.2.6项失败:kubelet证书CA配置问询
适配的CA证书选型
--kubelet-certificate-authority参数的核心作用是:kube-apiserver发起对kubelet接口的HTTPS调用(比如节点日志采集、容器exec操作、端口转发)时,用该参数指定的证书作为根信任源,校验kubelet返回的服务端证书合法性。
结合你提供的集群PKI目录结构,唯一适配的证书是:
ca.crt
这是集群全局根CA证书,默认场景下所有kubelet的服务端证书,都是由这个根CA签发的,完全满足apiserver校验kubelet身份的需求。
其余文件/目录均不适合该场景:
front-proxy-ca.crt:仅用于聚合API层的服务通信校验,和kubelet通信链路无关etcd目录下的CA文件:仅用于etcd集群内部的通信加密校验,不参与apiserver和kubelet的交互- 其余文件都是单组件专属的客户端/服务端证书、密钥,不具备根CA的信任校验能力。
可在节点上执行命令验证选型正确性:openssl verify -CAfile /etc/kubernetes/pki/ca.crt /var/lib/kubelet/pki/kubelet.crt
输出OK即说明该CA确实是签发kubelet服务证书的根证书。
具体配置步骤
- 确认证书绝对路径:你列出的PKI文件默认存放路径为
/etc/kubernetes/pki,因此目标CA的完整路径为/etc/kubernetes/pki/ca.crt。 - 编辑kube-apiserver静态配置清单:打开
/etc/kubernetes/manifests/kube-apiserver.yaml,在容器的command参数列表中新增配置行:
注意该参数仅需要CA的公钥证书文件,无需填写对应的- --kubelet-certificate-authority=/etc/kubernetes/pki/ca.crtca.key私钥文件。 - 等待配置自动生效:kubelet会实时监听manifests目录的文件变更,自动滚动重启kube-apiserver静态Pod,无需手动操作。约30秒后可执行如下命令确认参数已正常加载:
kubectl exec -n kube-system kube-apiserver-<对应master节点的主机名> -- kube-apiserver --help | grep kubelet-certificate-authority
常见配置避坑
- 不要误用
apiserver-kubelet-client.crt作为CA值:该文件是apiserver连接kubelet时使用的客户端证书,并非根CA,配置后会直接导致证书校验逻辑失效 - 不要填写相对路径:静态Pod的启动工作目录并非PKI目录,使用相对路径会导致apiserver启动时找不到证书文件,引发服务异常
- 配置生效后重新执行kube-bench的1.2.6检查项,确认原FAIL状态转为PASS即可
内容的提问来源于stack exchange,提问作者vinod827
相关产品推荐
相关产品推荐

