我试图进一步了解在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 ""
运行此命令时,我看到:
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服务器?
答案 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创建群集时默认启用此功能。
希望这会有所帮助!