使用OCI堡垒机服务连接私有Kubernetes集群出现TLS握手超时故障
故障原因
从SSH debug日志可以确认SSH到Bastion的连接、本地端口转发监听都正常,请求已经触发端口转发规则尝试连接远端K8S API的10.0.0.14:6443,但通道建立后立即被断开,最终导致TLS握手超时,故障根因分为以下几类:
- OCI Bastion会话配置错误:创建端口转发会话时填写的目标IP/CIDR未包含10.0.0.14这个地址,OCI Bastion会默认拦截所有不在会话允许目标范围内的流量,直接断开连接,这是你日志中channel刚建立就被释放的最常见原因。
- 安全组/NSG规则未放通:Bastion关联的安全组未放行到K8S API所在子网的6443端口出站规则,或是K8S API端点、集群节点关联的网络安全组/节点安全组未放行Bastion子网CIDR的6443端口入站规则。
- 网络连通性问题:如果Bastion和集群部署在不同VCN,需要确认VCN peering配置正常,两端路由表均已放通对方的CIDR段,路由可达。
- 节点本地防火墙拦截:Oracle Linux 7.9默认开启firewalld,若集群部署时未自动放通6443端口,本地防火墙会直接丢弃访问请求。
- kubeconfig配置错误:本地kubeconfig中的server地址未修改为
https://127.0.0.1:6443,或是API访问证书和地址不匹配。
你使用的ARM架构A1节点、K8S 1.20.8版本本身兼容OKE服务,不是故障原因。
所需额外配置
按照以下步骤排查修复即可:
- 重新创建Bastion端口转发会话,目标IP明确填写10.0.0.14,端口填写6443,会话有效期按需设置,确保目标地址范围正确。
- 调整安全组规则:
- 给Bastion关联的安全组添加出站规则:允许TCP协议6443端口到K8S API所在子网的CIDR
- 给K8S API端点、集群节点关联的安全组添加入站规则:允许TCP协议6443端口来自Bastion所在子网的CIDR
- 检查集群节点本地防火墙规则,登录节点执行以下命令放通端口:
firewall-cmd --add-port=6443/tcp --permanent firewall-cmd --reload
- 确认本地kubeconfig配置,clusters字段下的server地址改为
https://127.0.0.1:6443,可先执行kubectl cluster-info --insecure-skip-tls-verify测试连通性,确认正常后再恢复证书校验配置。
内容的提问来源于stack exchange,提问作者Raj
相关产品推荐
相关产品推荐

