You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Jenkins Kubernetes插件连接集群失败,报protocol_version错误

解决Jenkins Kubernetes插件连接K8s 1.25.5集群报“Received fatal alert: protocol_version”的问题

这个错误本质是TLS协议版本不兼容,以下是逐步排查和解决的方法:

1. 确认K8s API Server支持的TLS版本

用openssl s_client直接测试API Server的TLS兼容性:

# 测试TLS 1.2
openssl s_client -connect <K8S_API_SERVER_HOST>:6443 -tls1_2
# 测试TLS 1.3
openssl s_client -connect <K8S_API_SERVER_HOST>:6443 -tls1_3

如果某条命令返回握手成功,说明API Server支持该版本;如果失败,可检查kube-apiserver的--tls-min-version参数(K8s 1.25默认支持TLS1.2及以上)。

2. 强制Jenkins使用兼容的TLS版本

Jenkins官方镜像用的OpenJDK可能默认禁用了部分TLS版本,导致插件握手时用了API Server不支持的协议。修改Helm配置,添加JVM参数指定允许的TLS版本:
修改values.yaml:

controller:
  jvmOpts: >-
    -Djdk.tls.client.protocols=TLSv1.2,TLSv1.3
    -Dhttps.protocols=TLSv1.2,TLSv1.3

重新部署Jenkins:

helm upgrade jenkins jenkinsci/jenkins -f values.yaml

3. 降级Kubernetes插件到兼容版本

最新版Kubernetes插件可能和K8s 1.25.5存在协议适配问题,试试降级到已知稳定兼容的版本:

  • 进入Jenkins后台「插件管理」,找到「Kubernetes」插件,点击「降级」选项,选择适配K8s 1.25的版本(比如37.x系列),重启Jenkins后再测试连接。

4. 排除证书/权限干扰

虽然错误是协议问题,但先确认基础配置没问题:

  • 登录Jenkins容器,测试API Server连接:
curl --cacert /var/run/secrets/kubernetes.io/serviceaccount/ca.crt \
  -H "Authorization: Bearer $(cat /var/run/secrets/kubernetes.io/serviceaccount/token)" \
  https://kubernetes.default.svc/api/v1/nodes

如果curl能返回节点列表,说明证书、服务账户权限都正常,问题集中在TLS协议。

5. 分析SSL调试日志定位问题

你已经开启了SSL调试,从日志里找握手过程的细节:
比如日志里出现ClientHello, TLSv1.0但服务器只支持TLS1.2,就说明Jenkins客户端用了过低的TLS版本,这时候需要通过JVM参数强制指定高版本;如果是客户端发TLS1.3但服务器不支持,就去掉TLS1.3的参数。

内容的提问来源于stack exchange,提问作者Martin Smola

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.05 06:05:33