Kubernetes ds 不会在主节点上运行 pod

标签 kubernetes kubelet

<分区>

我正在运行一个包含 1 个主节点和 1 个节点的集群。现在,当我运行 daemon set 时,它只显示 1 个所需的节点,而它应该是 2 个。我在描述/日志中的任何地方都找不到错误,但是 daemonset 只选择了 1 个节点来运行。我正在使用 kubernetes 1.9.1。

知道我做错了什么吗?或者如何调试? TIA。

最佳答案

如果 k8s 主节点只有 node-role.kubernetes.io/master: NoSchedule 污点且不容忍,就会发生这种情况。

k8s 1.6 或更高版本需要 the node-role.kubernetes.io/master: NoSchedule 容忍度来调度主节点上的守护进程。

在 YAML 文件中为 daemonset 添加以下容忍度,使 k8s 也能在主节点上调度 daemonsets:

...
kind: DaemonSet
spec:
  ...
  template:
   ...
    spec:
      tolerations:
      - key: node-role.kubernetes.io/master
        effect: NoSchedule

可以通过以下方式检查主节点的污点:

kubectl describe node <master node>

可以通过以下方式检查 pod 的容忍度:

kubectl describe pod <pod name>

有关 daemonsets 的更多信息在 https://kubernetes.io/docs/concepts/workloads/controllers/daemonset/ 中.

关于Kubernetes ds 不会在主节点上运行 pod,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/48729580/

相关文章:

amazon-web-services - Kubernetes-具有自定义域名的AWS云提供商

kubernetes - Kubelet 停止发布节点状态

azure - 使用 Ingress 在 Azure VM 域名上公开应用程序

c# - 用于作业的 Kubernetes 服务帐户

Kubernetes Kube-proxy 获取节点信息失败

Kubernetes - 如何读取容器 livenessProbe 中的响应体?

kubernetes - 我如何才能批准处于“拒绝”状态的 CSR?

nginx - 我应该在Kubernetes集群中使用反向代理(例如NGINX)吗?

kubernetes - 允许访问 kubernetes 集群上除 get 节点之外的所有资源

amazon-web-services - EksCtl:通过群集配置文件更新节点定义不起作用