无法使用 kubectl 连接到 GKE 集群。超时

Cant connect to GKE cluster with kubectl. getting timeout

我执行了以下命令

gcloud container clusters get-credentials my-noice-cluter --region=asia-south2

并且该命令成功运行。我可以通过 kubectl config view

查看相关配置

但是当我尝试 kubectl 时,我超时了

kubectl 配置视图

❯ kubectl get pods -A -o wide
Unable to connect to the server: dial tcp <some noice ip>:443: i/o timeout

如果我在 gcp 中创建一个 VM 并在那里使用 kubectl 或使用 gcp 的云 shell,它可以工作,但它不能在我们本地的笔记本电脑和 PC 上工作。

关于我们集群的一些网络信息:-

Private cluster     Disabled    
Network     default 
Subnet  default 
VPC-native traffic routing  Enabled     
Pod address range   10.122.128.0/17     
Service address range   10.123.0.0/22   
Intranode visibility    Enabled     
NodeLocal DNSCache  Enabled     
HTTP Load Balancing     Enabled     
Subsetting for L4 Internal Load Balancers   Disabled    
Control plane authorized networks   
office (192.169.1.0/24)
    
Network policy  Disabled    
Dataplane V2    Disabled

我也有防火墙规则允许 http/s

❯ gcloud compute firewall-rules list
NAME                                       NETWORK  DIRECTION  PRIORITY  ALLOW                         DENY  DISABLED
default-allow-http                         default  INGRESS    1000      tcp:80                              False
default-allow-https                        default  INGRESS    1000      tcp:443                             False
....

如果它在 GCP VM 上工作,但在您的本地不起作用,这意味着它要么与 GCP 防火墙有关,要么您的 GKE 没有 public IP。

首先检查您的集群 IP 是否为 public,如果是,则需要添加允许通过 HTTPS(443 端口)的流量的防火墙规则。您可以在 gcloud 工具中或通过 GCP 控制台“防火墙 -> 创建防火墙规则”执行此操作。

如果它是从您的 VPC 而不是从外部工作的,那是因为您创建了一个 private GKE cluster。 master 只能通过私有 IP 或自动网络访问。

说到 authorized network,您有一个授权人 office (192.169.1.0/24)。遗憾的是,您在办公室网络中注册了一个私有 IP 范围,而不是用于访问互联网的 public IP。

要解决这个问题,请转到为您提供 public IP 的站点。然后使用 IP/32 更新集群的授权网络,然后重试。