使用kops在GCP创建集群验证时出现TLS handshake timeout错误如何解决
Kops GCP集群TLS握手超时问题排查与解决方案
W0823 18:23:11.030635 3200157 validate_cluster.go:173] (will retry): unexpected error during validation: error listing nodes: Get "https://34.101.133.0/api/v1/nodes": net/http: TLS handshake timeout
该报错核心是执行kops命令的客户端无法和Kubernetes API Server的6443端口完成TLS握手,可按以下流程排查解决:
排查步骤
- 确认API Server对应GCE实例状态
登录GCP控制台进入Compute Engine页面,筛选区域为asia-southeast2-a,查看集群master节点实例的运行状态,确认实例已完成初始化、无启动失败异常。 - 验证GCP防火墙规则配置
查找对应集群的防火墙规则,确认是否放行了当前执行kops命令设备的公网IP到API Server 6443端口的入站规则。kops默认仅会将创建集群时的本地公网IP加入放行列表,网络环境切换导致公网IP变更是该问题的高频诱因。
可执行以下命令手动测试端口连通性:telnet 34.101.133.0 6443
端口无法连通即可确定为防火墙拦截问题。 - 排查本地网络出口限制
部分内网、代理环境会禁止访问6443这类非标准端口,可切换手机热点等公共网络重新测试连通性,排除本地网络拦截的可能。 - 检查API Server服务运行状态
如果端口连通性正常,可登录master节点实例,执行systemctl status kubelet查看kubelet服务状态,再执行crictl ps确认API Server容器是否正常运行,排查服务启动失败导致的无响应问题。
对应解决方案
- 公网IP变更导致的防火墙拦截:
手动更新GCP对应防火墙规则,将当前设备的公网IP添加到6443端口的放行源地址列表,也可直接执行以下命令自动更新规则:kops update cluster --name simple.k8s.local --yes --admin
该命令会自动将当前执行设备的公网IP加入防火墙放行列表。 - 本地网络出口拦截:
更换无端口限制的网络环境,或在代理配置中添加6443端口的放行规则。 - API Server服务启动失败:
查看master节点kubelet日志journalctl -u kubelet -f以及API Server容器日志,定位启动失败的具体原因(如镜像拉取失败、配置错误等),修复后重启对应服务即可。 - 集群未完成初始化:
首次创建集群时master节点初始化需要5-10分钟,可延长等待时间后重新执行kops validate cluster --wait 15m验证集群状态。
内容的提问来源于stack exchange,提问作者ROHIT BANSAL
相关产品推荐
相关产品推荐

