2

由于在 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 describe node”时,它显示

  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 的子网大小。所以我又尝试了两个案例。

案例一

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) 

案例二

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 中的服务。对此有什么建议吗?

任何见解将不胜感激。

4

0 回答 0