我通过Terraform(设置了private = true
和region
的{{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/28
到master_ipv4_cidr_block
中,但这没有帮助。关于此设置的文档指出:
为主机的VPC指定专用的RFC1918块。大师 范围不得与群集的VPC中的任何子网重叠。的 主节点和您的群集使用VPC对等。必须在CIDR中指定 表示法,并且必须是/ 28子网。
但是,集群外部子网上的OpenVPN客户端意味着什么?如何利用上述VPC对等?
答案 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
文件中