Kubernetes net/http:TLS 握手超时

Kubernetes net/http:TLS 握手超时

我们使用 kubeadm 方法创建了一个自管理的 kubernetes 集群。这是一个托管在 AWS EC2 实例上的 3 节点集群(1 个主节点和 2 个从节点)。

我们创建了一个单独的 NGINX 服务器来路由部署在 K8S 集群上的不同应用程序的请求。

此 NGINX 服务器与 openssl 自签名证书一起链接到 AWS ALB,以便只能通过 HTTPS 侦听器端口(即 443)访问集群。

此外,我们已将一个单独的 ALB 与 K8S Master 链接起来,以访问 K8S Dashboard / K8S Api Server。

我们正在使用 Jenkins 创建作业以在 K8S 集群中自动部署。但是,当我们间歇性地运行该作业时,我们会收到 TLS 握手超时。

例如:- 如果我们运行以下命令:

kubectl get pods --insecure-skip-tls-verify=true

我们收到一个错误:

无法连接到服务器:net/http:TLS 握手超时

多次重新运行时,该命令均成功运行。

我们使用的是最新版本的 Kubernetes,即 1.15 版本

我们一直在努力寻找这一问题的永久解决方案。

我该如何修复它?

答案1

我们的架构大致如下:-

EndUser <- ALB1 <- NGINX 服务器(其中已设置访问托管在 K8S 集群上的应用程序的路由规则)

EndUser <- ALB2 <- K8S Master(用于访问 K8S Dashboard 或向 Kube API Server 发送请求)

看起来每当 Jenkins 服务器向 ALB2 发出连接 K8S 集群的请求时,数据包就会丢失,因此我们会遇到间歇性超时问题。

我们已用 Classic ELB 替换了 AWS ALB,这解决了间歇性超时问题。

希望这可以帮助。

相关内容