我正在尝试使用以下设置在 AWS 上启动一个新的 Kubernetes 集群:
export KUBERNETES_PROVIDER=aws
export KUBE_AWS_INSTANCE_PREFIX="k8-update-test"
export KUBE_AWS_ZONE="eu-west-1a"
export AWS_S3_REGION="eu-west-1"
export ENABLE_NODE_AUTOSCALER=true
export NON_MASQUERADE_CIDR="10.140.0.0/20"
export SERVICE_CLUSTER_IP_RANGE="10.140.1.0/24"
export DNS_SERVER_IP="10.140.1.10"
export MASTER_IP_RANGE="10.140.2.0/24"
export CLUSTER_IP_RANGE="10.140.3.0/24"
运行 $KUBE_ROOT/cluster/kube-up.sh
后,master 出现并启动 4 个(默认)minion。不幸的是只有一个小兵被读取。 kubectl getnodes
的结果是:
NAME STATUS AGE
ip-172-20-0-105.eu-west-1.compute.internal NotReady 19h
ip-172-20-0-106.eu-west-1.compute.internal NotReady 19h
ip-172-20-0-107.eu-west-1.compute.internal Ready 19h
ip-172-20-0-108.eu-west-1.compute.internal NotReady 19h
请注意,1 个节点正在运行,而 3 个节点尚未准备好。如果我查看 NotReady 节点的详细信息,则会收到以下错误:
ConfigureCBR0 requested, but PodCIDR not set. Will not configure CBR0 right now.
如果我尝试在不设置 NON_MASQUERADE_CIDR、SERVICE_CLUSTER_IP_RANGE、DNS_SERVER_IP、MASTER_IP_RANGE 和 CLUSTER_IP_RANGE 的情况下启动集群,一切都会正常。所有小黄人一开始就做好准备。
有人知道为什么只在一个节点上设置 PodCIDR 而在其他节点上没有设置吗?
还有一件事:相同的设置在 kubernetes 1.2.4 上运行良好。
最佳答案
您的集群 IP 范围太小。您已经为整个集群(255 个地址)分配了/24,默认情况下 Kubernetes 将为每个节点分配/24。这意味着第一个节点将被分配 10.140.3.0/24
,然后您将不再有任何/24 范围可分配给集群中的其他节点。
事实上,这在 1.2.4 中有效是一个错误,因为 CIDR 分配器没有检查它是否分配了超出集群 IP 范围的范围(现在它会这样做)。尝试为您的集群使用更大的范围(GCE 默认使用/14,这允许您扩展到 1000 个节点,但对于小型集群,您应该可以使用/20)。
关于amazon-web-services - AWS 上的 Kubernetes 1.3.x 只有一个工作 Minion,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/38498901/