无法从OpenVPN客户端连接到私有区域GKE端点

时间:2018-08-15 01:27:40

标签: terraform google-kubernetes-engine openvpn private-subnet terraform-provider-gcp

我通过Terraform(设置了private = trueregion的{​​{3}}创建了GKE Private Cluster,并安装了stable/openvpn舵图。我的设置与本文中所述的基本相同:google_container_cluster,并且能够看到本文所述的仅ClusterIP公开的服务。但是,当我连接到VPN时,kubectl由于无法访问主服务器而失败。

我将https://itnext.io/use-helm-to-deploy-openvpn-in-kubernetes-to-access-pods-and-services-217dec344f13保留为默认值(10.240.0.0,然后将OVPN_K8S_POD_NETWORK和子网掩码设置更改为创建专用子网(即专用群集)时选择的辅助范围住。

我什至尝试将10.240.0.0/16添加到我的OVPN_NETWORK setting中,但是我很确定该设置仅适用于外部网络(添加完全不同的OVPN服务器的外部IP可以让我运行{{1 }}连接时。

有什么想法我在这里做错了吗?

编辑:我只记得我必须为master_authorized_networks_config设置一个值才能创建私有集群。因此,我将kubectl添加为10.0.0.0/28master_ipv4_cidr_block中,但这没有帮助。关于此设置的文档指出:

  

为主机的VPC指定专用的RFC1918块。大师   范围不得与群集的VPC中的任何子网重叠。的   主节点和您的群集使用VPC对等。必须在CIDR中指定   表示法,并且必须是/ 28子网。

但是,集群外部子网上的OpenVPN客户端意味着什么?如何利用上述VPC对等?

2 个答案:

答案 0 :(得分:2)

找出问题所在:gcloud container clusters get-credentials始终将主机的外部IP地址写入~/.kube/config。因此,kubectl总是与该外部IP地址而不是内部IP通信。

要修复:我运行了kubectl get endpoints,注意到了10.0.0.x IP,并用它替换了~/.kube/config中的外部IP。现在kubectl在连接到Kube集群内部的OVPN服务器时可以正常工作。

答案 1 :(得分:0)

您可以在gcloud命令中添加--internal-ip,以将内部IP地址自动添加到~/.kube/config文件中