Kubernetes存活/就绪探针报错tls: bad certificate,证书验证疑问求助
解决Kubernetes探针报
remote error: tls: bad certificate问题 可能原因及对应解决方案
1. 探针的scheme字段未正确设置为HTTPS
尽管你提到已配置TLS,但首先要确认探针配置里的scheme是否准确设置为HTTPS——Kubernetes对该字段大小写敏感,必须严格写为HTTPS(而非Http或https)。
检查方式:
kubectl get pod <你的Pod名称> -o yaml | grep -A 10 -B 2 livenessProbe
正确的探针配置示例:
livenessProbe: httpGet: path: /healthz port: 8443 scheme: HTTPS readinessProbe: httpGet: path: /healthz port: 8443 scheme: HTTPS
2. 使用了不支持跳过证书验证的Kubernetes旧版本
Kubelet对HTTPS探针跳过证书验证的特性是在1.18及以上版本引入的,若集群版本过旧,该特性可能未生效。
检查方式:
kubectl version --short
若版本低于1.18,可考虑升级集群,或改用exec探针结合带跳过验证参数的curl。
3. 探针使用了httpGet以外的类型
如果探针是exec或tcpSocket类型,scheme字段设置不会生效:
- 若用
exec执行curl,需手动添加-k(或--insecure)参数跳过证书验证,示例配置:
livenessProbe: exec: command: - curl - -k - https://localhost:8443/healthz
4. 服务器端TLS证书存在严重问题
虽然官方文档说明HTTPS探针会跳过证书验证,但如果服务器返回的证书存在格式错误、密钥不匹配或完全无效的情况,TLS握手仍可能失败。
验证方式:
进入Pod内部执行:
curl -v https://localhost:8443/healthz
若不加-k时报错,需检查服务器的证书文件、私钥是否正确配置,确保证书链完整、未过期。
内容的提问来源于stack exchange,提问作者Revital Eres
相关产品推荐
相关产品推荐

