【问题标题】:Understanding --master-ipv4-cidr when provisioning private GKE clusters在配置私有 GKE 集群时了解 --master-ipv4-cidr
【发布时间】:2018-08-24 00:31:52
【问题描述】:

我正在尝试进一步了解在 Google 的 Kubernetes Engine 中配置私有集群时究竟发生了什么。

Google 在此处提供了一个配置私有集群的示例,其中控制平面服务(例如 Kubernetes API)位于 172.16.0.16/28 子网上。

https://cloud.google.com/kubernetes-engine/docs/how-to/private-clusters

gcloud beta container clusters create pr-clust-1 \
 --private-cluster \
 --master-ipv4-cidr 172.16.0.16/28 \
 --enable-ip-alias \
 --create-subnetwork ""

当我运行这个命令时,我看到:

  • 现在我的 VPC 中有几个 gke 子网属于节点和服务的集群子网。这些在10.x.x.x/8 范围内。
  • 172.16/16 地址空间中没有任何子网。
  • 我确实有一些似乎相关的新配对规则和路线。例如,有一条新路由peering-route-a08d11779e9a3276,其目标地址范围为172.16.0.16/28,下一跳为gke-62d565a060f347e0fba7-3094-3230-peer。然后这个对等角色指向gke-62d565a060f347e0fba7-3094-bb01-net
gcloud compute networks subnets list | grep us-west1

#=>

default                     us-west1                 default  10.138.0.0/20
gke-insti3-subnet-62d565a0  us-west1                 default  10.2.56.0/22
gcloud compute networks peerings list

#=>

NAME                                     NETWORK  PEER_PROJECT              PEER_NETWORK                                        AUTO_CREATE_ROUTES  STATE   STATE_DETAILS
gke-62d565a060f347e0fba7-3094-3230-peer  default  gke-prod-us-west1-a-4180  gke-62d565a060f347e0fba7-3094-bb01-net              True                ACTIVE  [2018-08-23T16:42:31.351-07:00]: Connected.

gke-62d565a060f347e0fba7-3094-bb01-net 是 Google 为 GKE 服务管理的 Kubernetes 管理端点所在的对等 VPC(172.16/16 范围内的控制平面内容)吗?

进一步 - 我的请求如何发送到 Kubernetes API 服务器?

【问题讨论】:

    标签: kubernetes google-cloud-platform google-kubernetes-engine gke-networking


    【解决方案1】:

    GKE 的Private Cluster 功能依赖于VPC 网络的Alias IP Ranges 功能,因此在创建私有集群时会发生多种情况:

    • --enable-ip-alias 标志告诉 GKE 使用具有两个辅助 IP 范围的子网:一个用于 pod,一个用于服务。这允许 VPC 网络了解集群中的所有 IP 地址并适当地路由流量。

    • --create-subnetwork 标志告诉 GKE 创建一个新子网(在您的情况下为 gke-insti3-subnet-62d565a0)并自动选择其主要和次要范围。请注意,您可以使用--cluster-ipv4-cidr--services-ipv4-cidr 自己选择次要范围。或者您甚至可以自己创建子网并告诉 GKE 使用标志 --subnetwork--cluster-secondary-range-name--services-secondary-range-name

    • --private-cluster 标志告诉 GKE 在 Google 拥有的项目中创建新的 VPC 网络(在您的情况下为 gke-62d565a060f347e0fba7-3094-bb01-net)并使用 VPC Network Peering 将其连接到您的 VPC 网络. Kubernetes 管理端点位于您使用 --master-ipv4-cidr 指定的范围内(在您的情况下为 172.16.0.16/28)。在 Google 拥有的项目中还创建了一个 Internal Load Balancer,这是您的工作节点与之通信的内容。在 Regional Cluster 的情况下,此 ILB 允许跨多个 VM 对流量进行负载平衡。您可以在gcloud beta container clusters describe 的输出中找到此内部IP 地址作为privateEndpoint 字段。需要了解的重要一点是,主虚拟机和工作节点虚拟机之间的所有通信都通过内部 IP 地址进行,这要归功于两个网络之间的 VPC 对等。

    • 您的私有集群有一个外部 IP 地址,您可以在 gcloud beta container clusters describe 的输出中找到 endpoint 字段。工作节点不使用它,但客户通常使用它来远程管理他们的集群,例如,使用kubectl

    • 您可以使用 Master Authorized Networks 功能来限制哪些 IP 范围(内部和外部)可以访问管理端点。强烈建议私有集群使用此功能,并在您使用gcloud CLI 创建集群时默认启用。

    希望这会有所帮助!

    【讨论】:

    • 感谢您的解释。能否解释一下使用--network /--subnetwork /--cluster-secondary-range-name--services-secondary-range-name的不同场景
    猜你喜欢
    • 2019-08-19
    • 2022-11-14
    • 2020-01-30
    • 2020-02-02
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2021-11-18
    相关资源
    最近更新 更多