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

时间:2020-01-03 15:03:39

标签: google-cloud-platform google-kubernetes-engine kubernetes-helm kubectl kubernetes-ingress

我使用以下命令创建了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)内的VM访问该群集。

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

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中添加VM,子网和客户端的私有IP范围,但是没有任何效果(我认为是因为它们都来自不同的地区)。

2 个答案:

答案 0 :(得分:0)

您是否曾经将--enable-master-authorized-networks标志和--master-authorized-networks一起使用,in the documentation?您是否使用命令masterAuthorizedNetworksConfig:检查了gcloud container clusters describe [CLUSTER_NAME]

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

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

答案 1 :(得分:0)

我遵循此blog from GCP来部署代理,并且在同一区域中还部署了OpenVPN服务器的另一个VM。

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

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