在配置私有GKE集群时了解--master-ipv4-cidr

时间:2018-08-24 00:31:53

标签: google-kubernetes-engine gke-networking

我试图进一步了解在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”

bash$ 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

(venv) Christophers-MacBook-Pro:Stratus-Cloud christophermutzel$ 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服务器?

1 个答案:

答案 0 :(得分:5)

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),并使用{ {3}}。 Kubernetes管理端点位于您使用--master-ipv4-cidr指定的范围内(在您的情况下为172.16.0.16/28)。在Google拥有的项目中也会创建一个VPC Network Peering,这就是您的工作程序节点与之通信的对象。在Internal Load Balancer的情况下,此ILB允许在多个VM之间实现流量负载平衡。您可以在privateEndpoint的输出中的gcloud beta container clusters describe字段中找到此内部IP地址。要了解的重要一点是,由于两个网络之间的VPC对等,因此主VM和辅助节点VM之间的所有通信都是通过内部IP地址进行的。

  • 您的专用群集 还有一个外部IP地址,您可以在endpoint的输出中的gcloud beta container clusters describe字段中找到该IP地址。工作者节点不使用此功能,但客户通常使用kubectl通过gcloud来远程管理群集。

  • 您可以使用Regional Cluster功能来限制哪些IP范围(内部和外部)有权访问管理端点。强烈建议私有群集使用此功能,并在使用return $this->view('emails.offeremailuser'); CLI创建群集时默认启用此功能。

希望这会有所帮助!