kubelet API SSL验证失败求助(拒绝跳过SSL验证)
解决Kubelet API SSL验证失败(证书CN与请求IP不匹配)的方案
问题核心
调用Kubelet API时证书验证失败,原因是证书通用名称(CN)为节点主机名aks-agentpool-38123352-vmss00000K,但请求使用的是节点IP10.224.0.12,两者不匹配;而Kubernetes API Server的证书包含了对应调用域名的SAN/CN,因此同一CA证书可正常验证。
以下是无需跳过SSL验证的解决方案:
方案1:使用节点主机名访问Kubelet API
直接用证书CN对应的节点主机名替代IP发起请求,确保证书验证匹配:
wget https://aks-agentpool-38123352-vmss00000K:10250/stats/summary --header "Authorization: Bearer $TOKEN" --ca-certificate=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt
注意:调用端需能解析该主机名,可通过集群内部DNS(若已配置节点主机名解析)或手动在/etc/hosts添加映射实现。
方案2:为Kubelet证书添加IP作为SAN字段
如果必须使用IP访问,需修改Kubelet配置,将节点IP加入证书的Subject Alternative Name(SAN):
- 找到Kubelet配置文件(AKS环境通常位于
/var/lib/kubelet/config.yaml),添加或更新certificateSANs字段:apiVersion: kubelet.config.k8s.io/v1beta1 kind: KubeletConfiguration serverTLSBootstrap: true certificateSANs: - "10.224.0.12" - "aks-agentpool-38123352-vmss00000K" - 重启Kubelet服务:
systemctl restart kubelet - 等待Kubelet向API Server重新申请包含IP SAN的新证书,完成后即可用IP正常访问Kubelet API并通过验证。
方案3:在调用端配置IP与主机名的映射
若无法修改Kubelet证书,可在调用机器的/etc/hosts中添加IP到节点主机名的映射:
10.224.0.12 aks-agentpool-38123352-vmss00000K
之后仍使用节点主机名调用Kubelet API,底层会解析到目标IP,同时证书验证可匹配CN。
内容的提问来源于stack exchange,提问作者Bharath Veerakumar
相关产品推荐
相关产品推荐

