无法使用自定义网络启动GKE(Google容器引擎)群集

时间:2016-06-27 14:50:49

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

我尝试使用"自定义"来启动GKE群集。键入网络,而不是" auto"类型网络。

我使用以下命令启动我的群集:

$ gcloud container clusters create --cluster-ipv4-cidr=10.0.0.0/14 --network=ttest --subnetwork=ttest --num-nodes=1 jt

我收到以下错误:

Creating cluster jt...done.
ERROR: (gcloud.container.clusters.create) Operation [<Operation
 name: u'operation-1467037655793-e319dc5e'
 operationType: OperationTypeValueValuesEnum(CREATE_CLUSTER, 1)
 selfLink: u'https://container.googleapis.com/v1/projects/TRUNCATED/zones/us-east1-b/operations/operation-1467037655793-e319dc5e'
 status: StatusValueValuesEnum(DONE, 3)
 statusMessage: u'Requested CIDR 10.0.0.0/14 is not available in network "ttest".'
 targetLink: u'https://container.googleapis.com/v1/projects/TRUNCATED/zones/us-east1-b/clusters/jt'
 zone: u'us-east1-b'>] finished with error: Requested CIDR 10.0.0.0/14 is not available in network "ttest".

似乎需要具有/14地址范围的网络或子网,因此命令应该理想情况下有效,但它没有。

这很奇怪,因为这是我的网络的样子:

ttest网络:

$ gcloud compute networks describe ttest

autoCreateSubnetworks: false
creationTimestamp: '2016-06-27T07:25:03.691-07:00'
id: '5404409453117999568'
kind: compute#network
name: ttest
selfLink: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/ttest
subnetworks:
- https://www.googleapis.com/compute/v1/projects/myproject/regions/us-east1/subnetworks/ttest
x_gcloud_mode: custom

ttest子网:

$ gcloud compute networks subnets describe ttest

creationTimestamp: '2016-06-27T07:25:21.649-07:00'
gatewayAddress: 10.0.0.1
id: '6237639993374575038'
ipCidrRange: 10.0.0.0/14
kind: compute#subnetwork
name: ttest
network: https://www.googleapis.com/compute/v1/projects/myproject/global/networks/ttest
region: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-east1
selfLink: https://www.googleapis.com/compute/v1/projects/myproject/regions/us-east1/subnetworks/ttest

我已尝试使用--range=10.0.0.0/8手动创建的旧网络尝试相同的操作,然后尝试在该网络中创建一个群集,但似乎无法正常工作。

似乎/ 14规则被硬编码到某个地方的GKE配置中,但我不知道在自定义网络中想要启动容器的内容。

GKE容器启动命令适用于模式/类型为"auto".

的任何网络

我仔细阅读了与我相关的任何文件,但没有太多运气。唯一一个突出显示this page的以下代码段:

  

将子网与其他子网一起使用时存在以下限制   产品:

     
      
  • Google托管虚拟机:仅在自动子网络网络上受支持。无法部署在自定义子网中。
  •   

GKE是否使用托管虚拟机?这是导致问题的原因吗?

1 个答案:

答案 0 :(得分:5)

GKE支持自定义子网。您遇到的问题是GKE强制Html.TextboxFor范围与VM可能从中分配IP的所有子网不相交,因为这会导致数据包在内部路由的位置不明确网络

cluster-ipv4-cidr确定哪些CIDR范围应该用于群集中的容器,而使用的子网确定哪些IP地址用于在该网络中创建的所有VM。

要解决此问题,只需在gcloud命令中停止指定cluster-ipv4-cidr标志即可。然后GKE会为您选择一个安全的--cluster-ipv4-cidr范围。