使用ACS-Engine将现有Azure VNET集成到Kubernetes集群

时间:2017-07-19 07:55:53

标签: azure kubernetes azure-container-service

由于在Azure门户中部署k8s群集不允许我将现有的Azure VENT附加到它,因此我选择了ACS-Engine。默认的k8s网络环境如下:

Private VNet    10.0.0.0/8
Master Subnet   10.240.255.0/24
Agent Subnet    10.240.0.0/24
Pod CIDR        10.244.0.0/16
Service CIDR    10.0.0.0/16

我想要达到的目标是:

Private VNet    10.25.0.0/24
Master Subnet   10.25.0.0/27
Agent Subnet    10.25.0.32/27
Pod CIDR        10.25.0.64/27
Service CIDR    10.0.0.0/16 (Default by ACS) 

为此,我首先创建了一个地址空间为10.25.0.0/24的Azure VNET(acs-vnet)。我一起创建了两个子网" msubnet"和" asubnet" 10.25.0.32/27和10.25.0.64/27。另外,我修改了模板json,如下所示:

 "properties": {
    "orchestratorProfile": {
      "orchestratorType": "Kubernetes",
      "orchestratorVersion": "1.6.2",
      "kubernetesConfig": {
        "clusterSubnet": "10.25.0.64/27"
      }
    },
    "masterProfile": {
      "count": 1,
      "dnsPrefix": "acsengine",
      "vmSize": "Standard_D2_v2",
      "vnetSubnetId": "/subscriptions/...../resourceGroups/.../providers/.../subnets/msubnet",
      "firstConsecutiveStaticIP": "10.25.0.5"
    },
    "agentPoolProfiles": [
      {
        "name": "agent",
        "count": 2,
        "vmSize": "Standard_A1",
        "availabilityProfile": "AvailabilitySet",
        "vnetSubnetId": "/subscriptions/.../resourceGroups/.../providers/.../subnets/asubnet",
        "osType": "Windows"
      }
    ],

然而,由于未分配POD CIDR,原来没有准备好:

user@k8s-master-0000000-0:~$ kubectl get node
NAME                    STATUS     AGE       VERSION
10000acs9001            Ready      31m       v1.6.0-alpha.1.2959+451473d43a2072
k8s-master-10008476-0   NotReady   34m       v1.6.2

当我跑步" kubectl描述节点"时,显示

  Ready                 False   Wed, 14 Jul 2017 04:40:38 +0000         Wed, 14 Jul 2017 04:12:03 +0000         KubeletNotReady                 runtime network not ready: NetworkReady=false ginNotReady message:docker: network plugin is not ready: Kubenet does not have netConfig. This is most likely due to lack of PodCIDR

有了这个结果,我怀疑它可能是由于分配给POD CIDR的子网大小造成的。所以我再试了两次。

案例I

Private VNet    10.25.0.0/16
Master Subnet   10.25.0.0/24
Agent Subnet    10.25.1.0/24
Pod CIDR        10.25.2.0/24
Service CIDR    10.0.0.0/16 (Default by ACS) 

案例II

Private VNet    10.24.0.0/14
Master Subnet   10.25.0.0/24
Agent Subnet    10.25.1.0/24
Pod CIDR        10.24.0.0/16
Service CIDR    10.0.0.0/16 (Default by ACS) 

对于情况I,它失败,因为10.25.2.0/24仅分配给主服务器,但不分配给代理程序。此外,出现以下消息。我验证它不是服务主体的问题,并在Azure中检查创建的Azure路由没有定义路由。

“NoRouteCreated    RouteController failed to create a route”

对于案例II,在这个阶段一切正常。

有了这个结果,我的问题是:

  1. 是否应该为POD CIDR分配最小子网大小?

  2. 如果我想将VNET说20.0.0.0/8附加到群集而不是原始的10.0.0.0/8,那么步骤是什么?在生成的azuredeploy.json文件中更改“$ env:VIP_CIDR = \" 10.0.0.0/8 \" \ n \ n”的值会有帮助吗?

  3. 如果我添加vnetSubnetId将我现有的VNET集成到我的k8s集群,比如20.0.0.0/16,是否会与预分配的10.0.0.0/8发生冲突? (根据我的理解,Azure SDN不知道这个私有VNET吗?)

  4. 我在现有的VNET环境中有一个VM,并希望使用VIP(Azure SDN不知道的服务CIDR)连接到Azure中的服务。有什么建议吗?

  5. 任何见解都会受到赞赏。

0 个答案:

没有答案