2017-05-04 39 views
1

我目前正试图了解如何以及为什么豆荚被安排在控制器上或不与kube-aws 0-9-6(1.6.2) 安装一个干净的堆栈后,查询KUBE-系统命名空间我看到以下内容:Kube-Aws Kubernetes控制器污点和容器容忍

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 

现在我们看到有一些舱体的运行和一些正在申请中。 挂起荚正在等待因:

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

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

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

这很好,控制器节点不可调度的,现在,我想看看为什么豆荚是预定的,为什么别人不是。 首先看KUBE-API服务器部署,我们看到:

tolerations: 
- effect: NoExecute 
    operator: Exists 

首先,这样不会出现在控制器中的用户数据,我不知道它从何而来,但即使它的存在,它没有意义,这宽容满足NoSchedule的污点

然后,如果我们看一下那些未决状态等豆荚,我们可以看到如下:

tolerations: 
    - key: CriticalAddonsOnly 
    operator: Exists 

这很清楚为什么他们不能安排,他们处于未决状态。它不符合污点。

从这一刻起,无论我做什么(除了满足NoSchedule)。没有什么变化。

将NoExecute效果添加到任何挂起的节点不会带来它们是正确的,因为它们不满足任何事情。

我无法找到的API服务器,控制器经理,代理和调度的任何理由来运行,而不是挂起(无法看到用户数据什么特别的为好)

能任何人请向我解释发生了什么事?

由于

回答

0

的tolerations &污点应在展开对象的YAML(例如调度器,控制器,等等)来定义。我不希望他们在实例的UserData中。

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