【问题标题】:kube-dns pods does not run when install with kops使用 kops 安装时,kube-dns pods 不运行
【发布时间】:2018-11-05 16:02:13
【问题描述】:

我已经使用 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创建集群时启用它

谢谢

【问题讨论】:

    标签: kubernetes kops kube-dns


    【解决方案1】:

    在所有类型的Kubernetes networking add-ons 的 kops 模板中设置了污点。

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

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

    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 或更高版本,您还可以在 实例组。 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"
    

    【讨论】:

    • 这不是我的情况,我有一个只有 1 个主节点和 0 个节点的实例组,所以我想在主节点上运行 pod。这导致了上述问题。但没关系,我通过创建一个自定义用户数据脚本来解决这个问题,以使 master 不受污染以允许它分配 pods
    猜你喜欢
    • 2023-03-31
    • 2017-08-26
    • 1970-01-01
    • 2016-12-22
    • 1970-01-01
    • 2018-03-05
    • 1970-01-01
    • 2018-12-18
    • 1970-01-01
    相关资源
    最近更新 更多