我使用kops设置了一个独立的k8s群集,所以我希望所有pod只能在1个master上运行。群集启动良好,但kube-dns和kube-autoscaler pods没有运行,它处于挂起状态。这是节点描述
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
由于
答案 0 :(得分:0)
Taints在kops模板中设置,适用于所有类型的Kubernetes networking add-ons。
现在无法使用命令行选项启用/禁用该部分模板。
但是,有可能为实例组配置污点:
kops edit ig master-us-west-1c
Instance Groups
默认情况下,群集具有:
- 一个名为节点的实例组,跨越所有区域;这些实例是你的工人。
- 每个主区域的一个实例组,称为master-(例如master-us-east-1c)。这些通常具有最小尺寸和最大尺寸 = 1,因此它们将运行单个实例。我们这样做是为了让云总是重新启动主人,即使一切都被终止了 一旦。我们每个区域都有一个实例组,因为我们需要强制执行 云在每个区域中运行一个实例,因此我们可以安装主服务器 卷 - 我们不能跨区域这样做。
Adding Taints or Labels to an Instance Group
如果你正在运行 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"