0

我已经使用 kops 设置了一个独立的 k8s 集群,所以我希望所有 pod 也只在 1 个 master 上运行。集群启动良好,但 kube-dns 和 kube-autoscaler pod 没有运行,处于挂起状态。这是节点描述

kubectl describe nodes
Name:               ip-10-0-3-184.ap-southeast-1.compute.internal
Roles:              master
Labels:             beta.kubernetes.io/arch=amd64
                    beta.kubernetes.io/instance-type=m3.large
                    beta.kubernetes.io/os=linux
                    failure-domain.beta.kubernetes.io/region=ap-southeast-1
                    failure-domain.beta.kubernetes.io/zone=ap-southeast-1a
                    kops.k8s.io/instancegroup=master-ap-southeast-1a
                    kubernetes.io/hostname=ip-10-0-3-184.ap-southeast-1.compute.internal
                    kubernetes.io/role=master
                    node-role.kubernetes.io/master=
Annotations:        node.alpha.kubernetes.io/ttl=0
                    volumes.kubernetes.io/controller-managed-attach-detach=true
Taints:             node-role.kubernetes.io/master:NoSchedule

但是/var/log/kube-scheduler.log是:

I0526 12:49:54.629475       1 scheduler.go:191] Failed to schedule pod: kube-system/kube-dns-autoscaler-787d59df8f-8jgn7
I0526 12:49:54.629570       1 factory.go:1251] Updating pod condition for kube-system/kube-dns-autoscaler-787d59df8f-8jgn7 to (PodScheduled==False)
I0526 12:50:09.706382       1 scheduler.go:191] Failed to schedule pod: kube-system/kube-dns-7785f4d7dc-rqzdq
I0526 12:50:09.706484       1 factory.go:1251] Updating pod condition for kube-system/kube-dns-7785f4d7dc-rqzdq to (PodScheduled==False)
I0526 12:50:10.632285       1 scheduler.go:191] Failed to schedule pod: kube-system/kube-dns-autoscaler-787d59df8f-8jgn7
I0526 12:50:10.632371       1 factory.go:1251] Updating pod condition for kube-system/kube-dns-autoscaler-787d59df8f-8jgn7 to (PodScheduled==False)
I0526 12:50:41.709687       1 scheduler.go:191] Failed to schedule pod: kube-system/kube-dns-7785f4d7dc-rqzdq
I0526 12:50:41.709796       1 factory.go:1251] Updating pod condition for kube-system/kube-dns-7785f4d7dc-rqzdq to (PodScheduled==False)
I0526 12:50:42.635260       1 scheduler.go:191] Failed to schedule pod: kube-system/kube-dns-autoscaler-787d59df8f-8jgn7
I0526 12:50:42.635361       1 factory.go:1251] Updating pod condition for kube-system/kube-dns-autoscaler-787d59df8f-8jgn7 to (PodScheduled==False)

我可以使用命令手动修复它, kubectl taint nodes --all node-role.kubernetes.io/master- 但我希望在创建集群时启用它kops create cluster

谢谢

4

1 回答 1

0

污点在所有类型的Kubernetes 网络插件的kops 模板中设置。

目前无法使用命令行选项启用/禁用模板的该部分。

但是,可以为实例组配置污点:

kops edit ig master-us-west-1c

实例组
默认情况下,集群具有:

  • 一个称为节点的实例组,跨越所有区域;这些实例是您的工人。
  • 每个主区域有一个实例组,称为 master-(例如 master-us-east-1c)。这些通常具有最小大小和最大大小 = 1,因此它们将运行单个实例。我们这样做是为了让云始终重新启动主服务器,即使一切都立即终止。我们每个区域都有一个实例组,因为我们需要强制云在每个区域中运行一个实例,所以我们可以挂载主卷 - 我们不能跨区域这样做。

向实例组添加污点或标签
如果您运行的是 Kubernetes 1.6.0 或更高版本,您还可以控制 InstanceGroup 中的污点。taints 属性接受一个字符串列表。以下示例将使用与上述相同的编辑 -> 更新 -> 滚动更新过程向 IG 添加两个污点。

此外,可以将 nodeLabels 添加到 IG 以利用 Pod Affinity。IG 中的每个节点都将被分配所需的标签。有关更多信息,请参阅标签文档。

metadata:
  creationTimestamp: "2016-07-10T15:47:14Z"
  name: nodes
spec:
  machineType: m3.medium
  maxSize: 3
  minSize: 3
  role: Node
  taints:
  - dedicated=gpu:NoSchedule
  - team=search:PreferNoSchedule
  nodeLabels:
    spot: "false"
于 2018-05-28T14:35:42.843 回答