从其他区域访问私有 GKE 集群?



我使用以下命令创建了一个 GKE 集群:

gcloud beta container clusters create "cluster-asia-south1" 
--region "asia-south1" 
--project "project123" 
--cluster-version "1.14.8-gke.12" 
--machine-type "n1-standard-1" 
--image-type "COS" --disk-type "pd-standard" --disk-size "100" 
--scopes "https://www.googleapis.com/auth/cloud-platform" 
--num-nodes "1" 
--no-enable-basic-auth 
--metadata disable-legacy-endpoints=true 
--max-pods-per-node "110" --enable-stackdriver-kubernetes 
--enable-ip-alias 
--network "projects/project123/global/networks/default" 
--subnetwork "projects/project123/regions/asia-south1/subnetworks/default" 
--default-max-pods-per-node "110" 
--addons HorizontalPodAutoscaling,HttpLoadBalancing 
--no-enable-autoupgrade 
--no-enable-autorepair 
--node-locations asia-south1-a,asia-south1-b

我知道可以从asia-south1区域内的虚拟机访问此群集(例如gcp-vm-asia-south1-a(。

因此,我在此虚拟机中安装了OpenVPN服务器(gcp-vm-asia-south1-a(。现在,当我从本地系统连接到此 VM 时,我能够访问集群主端点,以下命令工作正常:

gcloud container clusters get-credentials "cluster-asia-south1" --region "asia-south1"

然后kuebctl get pods工作正常,我也可以通过 Helm 连接。

假设我在同一 VPC 中还有两个集群,但区域不同(例如cluster-us-central1cluster-us-west1(。如何使用同一个OpenVPN服务器来访问这些集群?

我知道如果我为每个区域设置一个OpenVPN服务器,我将能够连接到相应的VPN服务器,并且可以从该区域访问GKE集群而不会出现问题。

但我不想在每个地区管理三台OpenVPN服务器。管理堡垒会加热几iptablesforwarding rules或类似的东西应该没问题。

这个想法是为一个VPC保留一个OpenVPN服务器,无论有多少个区域。这是否可行,有什么办法可以做到这一点吗?

我尝试在--master-authorized-networks中添加虚拟机、子网和客户端的私有 IP 范围,但没有任何效果(我认为因为它们都来自不同的地区(。

您是否按照文档中提到的--master-authorized-networks使用了--enable-master-authorized-networks标志?您是否使用命令gcloud container clusters describe [CLUSTER_NAME]检查masterAuthorizedNetworksConfig:

您是否有任何防火墙规则可以限制从 OpenVPN 服务器访问其他集群?

编辑连接问题的原因可能是使用来自不同区域的子网:"VPC 网络是全局资源,但单个子网是区域资源"和"同一区域内的任何资源都可以访问区域资源"。

我按照 GCP 的这篇博客部署了代理,在同一区域中还有另一个虚拟机,上面部署了 OpenVPN 服务器。

我将本地计算机连接到OpenVPN服务器,并使用博客中显示的变量更改https_proxy=LOCAD_BALANCER_IP:PORT代理。

现在,我的本地计算机能够与 GKE 集群的主 IP 进行交互,因为主机器认为请求来自集群内部署的代理服务。此代理服务认为请求不是来自区域外部,而是来自同一区域和 VPC 中的 OpenVPN 服务器 (VM(。

相关内容

  • 没有找到相关文章

最新更新