由于在 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,在这个阶段一切正常。
有了这个结果,我的问题是:
是否有应分配给 POD CIDR 的最小子网大小?
如果我想将一个 VNET 说 20.0.0.0/8 附加到集群,而不是原来的 10.0.0.0/8 ,那么要执行哪些步骤?会在生成的 azuredeploy.json 文件帮助中更改“$env:VIP_CIDR=\"10.0.0.0/8\"\n\n” 的值吗?
如果我添加 vnetSubnetId 以将我现有的 VNET 集成到我的 k8s 集群中,比如 20.0.0.0/16,会不会与预分配的 10.0.0.0/8 有任何冲突?(据我了解,Azure SDN 不知道这个私有 VNET?)
我在现有的 VNET 环境中有一个 VM,并且想使用 VIP(Azure SDN 未知的服务 CIDR)连接到 Azure 中的服务。对此有什么建议吗?
任何见解将不胜感激。