Kube-Aws Kubernetes控制器污点和吊舱容忍度

时间:2017-05-04 12:57:03

标签: kubernetes coreos kube-aws

我目前正试图通过kube-aws 0-9-6(1.6.2)了解如何以及为什么要在控制器上安排pod? 安装干净堆栈后,查询kube-system命名空间,我看到以下内容:

  kubectl --kubeconfig=kubeconfig --namespace kube-system get pod
    NAME                                                              READY     STATUS    RESTARTS   AGE
    heapster-v1.3.0-690018220-tvr45                                   0/2       Pending   0          1h
    kube-apiserver-ip-10-0-0-17.eu-west-1.compute.internal            1/1       Running   0          3h
    kube-controller-manager-ip-10-0-0-17.eu-west-1.compute.internal   1/1       Running   0          3h
    kube-dns-1455470676-tlrlf                                         0/3       Pending   0          3h
    kube-dns-autoscaler-1106974149-xvdw5                              0/1       Pending   0          1h
    kube-proxy-ip-10-0-0-17.eu-west-1.compute.internal                1/1       Running   0          3h
    kube-scheduler-ip-10-0-0-17.eu-west-1.compute.internal            1/1       Running   0          1h
    kubernetes-dashboard-v1.5.1-50n8s                                 1/1       Running   0          7s

现在我们看到一些pod正在运行,而另一些正在等待。 由于以下原因,待处理的待处理暂停:

No nodes are available that match all of the following predicates:: PodToleratesNodeTaints (1).

首先查看节点,我看到以下内容:

Taints:         node.alpha.kubernetes.io/role=master:NoSchedule

哪个好,控制器节点不可调度,现在,我想知道为什么要安排pod以及为什么其他没有安排。 首先看一下kube-apiserver部署,我们看到:

tolerations:
 - effect: NoExecute
   operator: Exists

首先,这不会出现在控制器用户数据中,我想知道它来自何处,但即使它存在,也没有意义这种容忍度满足NoSchedule的污点

然后,如果我们查看处于暂挂状态的其他pod,我们可以看到以下内容:

 tolerations:
  - key: CriticalAddonsOnly
    operator: Exists

这非常清楚为什么他们无法安排,他们处于待定状态。它不能满足污点。

从这一点开始,无论我做什么(除了满足NoSchedule)。什么都没有改变。

将NoExecute效果添加到任何待处理节点都不会使它们正确,因为它们不满足任何要求。

我找不到任何理由让api-server,controller-manager,proxy和scheduler运行而不是挂起(在用户数据中也看不到任何特殊内容)

有人可以向我解释发生了什么事吗?

由于

1 个答案:

答案 0 :(得分:0)

耐受性&应该在已部署对象的yaml中定义taints(例如,调度程序,控制器等)。我不希望它们出现在实例的UserData中。

除了主服务器之外,群集中是否有任何节点?似乎其他插件(dns等)将在集群中的节点上运行,而核心组件(调度程序等)设置为在主节点上运行。