Google Kubernetes Engine 上的 kubectl 命令超时

问题描述 投票:0回答:2

我从 kubernetes 仪表板设置了一个集群,在专用网络中有 2 个节点。

我已经公开了从容器实例映射到端口 8545 的端口 80。 因此,当我访问外部 IP 时,我可以查看我的应用程序。

我在我的机器上设置了

kubectl
并运行以下命令

gcloud container clusters get-credentials <cluster name> --zone <my-zone> --project <project name>

但是,当我运行这个时,我收到错误

$ kubectl get deployments
Unable to connect to the server: dial tcp 35.194.113.118:443: i/o timeout

在 GCP 仪表板上,我看到集群的以下内容

Endpoint    
35.194.113.118

旁边还有一个查看凭据选项,其中包含证书文件以及用户名和密码

所以,我尝试设置它

kubectl config set-credentials cluster-admin --username=admin --password=<my password>

我再次尝试了 kubectl 命令,但是遇到了相同的超时错误。 有人可以帮忙解决这个问题吗?

google-kubernetes-engine
2个回答
8
投票

我通过编辑集群并选择

Add Authorized network
添加了授权网络。 这似乎已经解决了问题。

https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters


0
投票

虽然OP解决了这个问题,但我会尽力为其他人澄清。

问题源于集群是私有集群,因此无法从任何 IP 访问。 Google Cloud Shell(或来自云提供商的任何 shell)与集群不在同一 IP 范围内。我们必须允许集群接受来自可信来源(我们的 IP 范围)的请求。

为了能够正确连接到 kubernetes 集群,我们必须执行以下操作:

这应该可以解决各种 kubectl 命令的超时问题。

PS: 对于步骤 3,要确定现有的 auth_nets,建议使用以下命令:

gcloud container clusters describe private-cluster-1 --region europe-west1 --format "flattened(masterAuthorizedNetworksConfig.cidrBlocks[])"

我发现使用它很有帮助:

gcloud container clusters describe private-cluster-1 --region europe-west1 | grep master
© www.soinside.com 2019 - 2024. All rights reserved.