从不同区域访问私有 GKE 集群?
Access private GKE clusters from a different region?
我使用以下命令创建了一个 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-central1
和 cluster-us-west1
)。我如何使用相同的 OpenVPN 服务器来访问这些集群?
我知道如果我为每个区域设置一个 OpenVPN 服务器,我将能够连接到相应的 VPN 服务器,并且可以毫无问题地访问该区域的 GKE 集群。
但我不想在每个区域管理三台 OpenVPN 服务器。管理堡垒热点 iptables
或 forwarding rules
或类似的东西应该没问题。
想法是无论有多少个区域,都为一个 VPC 保留一个 OpenVPN 服务器。这是否可行,有什么办法吗?
我尝试在 --master-authorized-networks
中添加虚拟机、子网和客户端的私有 IP 范围,但没有任何效果(我想是因为它们都来自不同的区域)。
您是否像 in the documentation 提到的那样将 --enable-master-authorized-networks
标志与 --master-authorized-networks
一起使用?您是否使用命令 gcloud container clusters describe [CLUSTER_NAME]
检查了 masterAuthorizedNetworksConfig:
?
您是否有任何防火墙规则可以限制从您的 OpenVPN 服务器访问其他集群?
编辑 连接问题的原因可能是使用来自不同 regions 的子网:"A VPC network is a global resource, but individual subnets are regional resources" 和 "Regional resources are accessible by any resources within the same region"。
我按照这个 blog from GCP 部署了代理,并且在同一区域中还有另一个 VM,上面部署了 OpenVPN 服务器。
我将我的本地计算机连接到 OpenVPN 服务器并使用博客中显示的 https_proxy=LOCAD_BALANCER_IP:PORT
变量更改我的代理。
现在我的本地机器能够与 GKE 集群的主 IP 交互,因为主认为请求来自部署在集群内的代理服务。此代理服务认为请求不是来自区域外,而是来自同一区域和 VPC 的 OpenVPN 服务器(VM)。
我使用以下命令创建了一个 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-central1
和 cluster-us-west1
)。我如何使用相同的 OpenVPN 服务器来访问这些集群?
我知道如果我为每个区域设置一个 OpenVPN 服务器,我将能够连接到相应的 VPN 服务器,并且可以毫无问题地访问该区域的 GKE 集群。
但我不想在每个区域管理三台 OpenVPN 服务器。管理堡垒热点 iptables
或 forwarding rules
或类似的东西应该没问题。
想法是无论有多少个区域,都为一个 VPC 保留一个 OpenVPN 服务器。这是否可行,有什么办法吗?
我尝试在 --master-authorized-networks
中添加虚拟机、子网和客户端的私有 IP 范围,但没有任何效果(我想是因为它们都来自不同的区域)。
您是否像 in the documentation 提到的那样将 --enable-master-authorized-networks
标志与 --master-authorized-networks
一起使用?您是否使用命令 gcloud container clusters describe [CLUSTER_NAME]
检查了 masterAuthorizedNetworksConfig:
?
您是否有任何防火墙规则可以限制从您的 OpenVPN 服务器访问其他集群?
编辑 连接问题的原因可能是使用来自不同 regions 的子网:"A VPC network is a global resource, but individual subnets are regional resources" 和 "Regional resources are accessible by any resources within the same region"。
我按照这个 blog from GCP 部署了代理,并且在同一区域中还有另一个 VM,上面部署了 OpenVPN 服务器。
我将我的本地计算机连接到 OpenVPN 服务器并使用博客中显示的 https_proxy=LOCAD_BALANCER_IP:PORT
变量更改我的代理。
现在我的本地机器能够与 GKE 集群的主 IP 交互,因为主认为请求来自部署在集群内的代理服务。此代理服务认为请求不是来自区域外,而是来自同一区域和 VPC 的 OpenVPN 服务器(VM)。