使用带有 Kubernetes 1.21 的 EKS,在私有子网中管理节点组。我正在尝试设置集群,以便kubectl exec
无论工作负载如何,在不活动后都会超时exec
,并且无需任何客户端配置。
我知道https://github.com/containerd/containerd/issues/5563,但我们使用的是 Docker 运行时 1.21 版本,尚未使用 containerd。
我streamingConnectionIdleTimeout: 3600s
在启动模板中的kubelet上设置:
cat /etc/kubernetes/kubelet/kubelet-config.json | jq '.streamingConnectionIdleTimeout = "3600s"' > /etc/kubernetes/kubelet/kubelet-config.json
/etc/eks/bootstrap.sh {{CLUSTER_NAME}}
并与 确认curl -sSL "http://localhost:8001/api/v1/nodes/(node name)/proxy/configz"
。
但,kubectl exec
仍然没有超时。
我/proc/sys/net/ipv4/tcp_keepalive_time = 7200
在客户端和节点上都进行了确认,因此在 Linux 开始发送保持活动探测之前,我们应该达到流连接空闲超时。
通读kubectl exec
工作原理,看来 EKS 管理的控制平面正在保持连接处于活动状态。网上有人对面的问题 - 无论如何,他们的连接都会超时streamingConnectionIdleTimeout
- 他们通过调整 k8s API 服务器前面的负载均衡器的超时来解决这个问题。但是,在 EKS 管理的控制平面上没有可以在这方面进行调整的旋钮(据我所知)。
我将非常感激有关这个话题的任何意见。