【问题标题】:Cannot connect to Private, Regional GKE endpoint from OpenVPN client无法从 OpenVPN 客户端连接到专用的区域 GKE 端点
【发布时间】:2019-01-21 22:05:28
【问题描述】:

我通过 Terraform 创建了 GKE Private Clustergoogle_container_clusterprivate = trueregion 设置)并安装了 stable/openvpn Helm Chart。我的设置与本文中描述的基本相同:https://itnext.io/use-helm-to-deploy-openvpn-in-kubernetes-to-access-pods-and-services-217dec344f13,并且我能够看到文章中描述的 ClusterIP-only 公开服务。但是,当我连接到 VPN 时,kubectl 由于无法连接到主服务器而失败。

我将 OVPN_NETWORK setting 保留为默认值 (10.240.0.0),并将 OVPN_K8S_POD_NETWORK 和子网掩码设置更改为我在创建私有集群所在的私有子网时选择的次要范围。

我什至尝试将10.240.0.0/16 添加到我的master_authorized_networks_config,但我很确定该设置仅适用于外部网络(添加一个完全不同的 OVPN 服务器的外部 IP 允许我在运行时运行 kubectl连接到它)。

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

编辑:我只记得我必须为 master_ipv4_cidr_block 设置一个值才能创建私有集群。所以我将10.0.0.0/28 添加到ovpn.conf file 作为push "route 10.0.0.0 255.255.255.240" 但这没有帮助。有关此设置的文档指出:

为主服务器的 VPC 指定私有 RFC1918 块。大师 范围不得与集群 VPC 中的任何子网重叠。这 master 和您的集群使用 VPC 对等互连。必须在 CIDR 中指定 表示法,并且必须是 /28 子网。

但是对于集群外部子网上的 OpenVPN 客户端有何影响?如何利用上述 VPC 对等互连?

【问题讨论】:

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


    【解决方案1】:

    找出问题所在: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 服务器时可以正常工作。

    【讨论】:

      【解决方案2】:

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

      【讨论】:

        猜你喜欢
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2020-10-25
        • 2013-09-04
        • 1970-01-01
        • 2022-11-07
        • 2013-02-14
        • 1970-01-01
        相关资源
        最近更新 更多