k8s pod指定在master节点上运行

    在某些场景,例如资源有限或特殊的拓扑结构下,需要将某些服务可以或者指定到k8s的master节点进行运行。

    这时候就需要通过修改pod的配置,使其可以在任意节点上运行(包括master和node):

    tolerations:
        - key: node-role.kubernetes.io/master
          effect: NoSchedule

    如果需要指定必须在master上执行,需要再配置nodeSelector:

    nodeSelector:
        node-role.kubernetes.io/master: ""

在 Kubernetes 中,若希望 DaemonSet 仅在主节点master nodes)上运行,需要结合 **Taint(污点)** 和 **Toleration(容忍度)** 机制,以及 **Node Selector** 或 **Node Affinity** 来实现。 ### 1. 主节点的默认污点 Kubernetes 主节点通常带有默认的污点 `node-role.kubernetes.io/master:NoSchedule` 或 `node-role.kubernetes.io/control-plane:NoSchedule`,用于防止普通 Pod 被调度到主节点运行。因此,若希望 DaemonSet 能在主节点运行,必须为其配置相应的容忍度[^1]。 ### 2. 配置 DaemonSet 的容忍度 在 DaemonSet 的 Pod 模板中添加与主节点污点匹配的容忍度,例如: ```yaml tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule ``` ### 3. 使用 Node Selector 或 Node Affinity 限制节点范围 为了确保 DaemonSet 仅在主节点运行,还需通过 `nodeSelector` 或 `affinity` 明确指定目标节点。例如使用 `nodeSelector`: ```yaml nodeSelector: node-role.kubernetes.io/master: "" ``` 或者使用更灵活的 `nodeAffinity`: ```yaml affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: node-role.kubernetes.io/master operator: Exists ``` ### 4. 完整示例 以下是一个完整的 DaemonSet 配置示例,确保其 Pod 仅在主节点运行: ```yaml apiVersion: apps/v1 kind: DaemonSet metadata: name: daemonset-on-master spec: selector: matchLabels: app: daemonset-on-master template: metadata: labels: app: daemonset-on-master spec: tolerations: - key: node-role.kubernetes.io/master operator: Exists effect: NoSchedule containers: - name: main-container image: nginx nodeSelector: node-role.kubernetes.io/master: "" ``` ### 5. 注意事项 - 确保主节点标签未被修改或删除,否则 `nodeSelector` 或 `affinity` 可能无法正确匹配节点。 - 若使用的是 Kubernetes 1.24 及以上版本,主节点标签可能为 `node-role.kubernetes.io/control-plane`,需相应调整容忍度和选择器。 - 需确保主节点允许运行非核心组件的 Pod,部分集群可能默认禁止此类操作。
评论 1
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值