我试图进一步了解我在Google的Kubernetes Engine中配置私有(private)集群时到底发生了什么。

Google在此处提供了一个示例,该示例提供了一个私有(private)集群,其中控制平面服务(例如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'
  • bash$ gcloud compute networks subnets list | grep us-west1default us-west1 default 10.138.0.0/20gke-insti3-subnet-62d565a0 us-west1 default 10.2.56.0/22(venv) Christophers-MacBook-Pro:Stratus-Cloud christophermutzel$ gcloud compute networks peerings listNAME NETWORK PEER_PROJECT PEER_NETWORK AUTO_CREATE_ROUTES STATE STATE_DETAILSgke-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服务器?

    最佳答案

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

  • --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之间实现流量负载平衡。您可以在privateEndpoint的输出中找到此内部IP地址作为gcloud beta container clusters describe字段。要了解的重要一点是,由于两个网络之间的VPC对等连接,因此主VM和工作节点VM之间的所有通信都是通过内部IP地址进行的。
  • 您的私有(private)集群具有一个外部IP地址,您可以在endpoint的输出中将其作为gcloud beta container clusters describe字段找到。工作节点未使用此属性,但通常由客户使用,例如使用kubectl远程管理其集群。
  • 您可以使用Master Authorized Networks功能来限制哪些IP范围(内部和外部)可以访问管理端点。强烈建议为私有(private)集群使用此功能,并在使用gcloud CLI创建集群时默认启用该功能。

  • 希望这可以帮助!

    关于google-kubernetes-engine - 在配置私有(private)GKE集群时了解--master-ipv4-cidr,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/51995973/

    10-11 12:08