You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

Kubernetes下InnoDB Cluster:NodeSelect/Affinity能否避开Master/Longhorn?

在Kubernetes InnoDB Cluster中指定Worker节点调度的方案

可以实现指定Worker节点调度、避开Master或Longhorn节点的需求。Oracle MySQL Operator的InnoDBCluster CRD虽然没有直接暴露nodeSelector或affinity顶级字段,但支持通过**spec.podTemplate**定义Pod级别的调度规则,以此控制MySQL实例Pod的调度范围;如果需要控制Router Pod的调度,同样可以在spec.router.podTemplate中配置相同规则。

具体配置示例

以下是基于你提供的模板修改后的完整配置,添加了调度规则以避开Master节点和Longhorn节点:

apiVersion: mysql.oracle.com/v2
kind: InnoDBCluster
metadata:
  name: mycluster
spec:
  secretName: mypwds
  tlsUseSelfSigned: true
  instances: 3
  version: 8.3.0
  # 配置MySQL实例Pod的调度规则
  podTemplate:
    spec:
      # 节点选择器:直接匹配目标Worker节点的标签(示例标签:node-type=worker)
      nodeSelector:
        node-type: worker
      # 节点亲和性:强制避开Master和Longhorn节点
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              # 避开带有Master角色标签的节点
              - key: node-role.kubernetes.io/master
                operator: DoesNotExist
              # 避开Longhorn管理的节点(假设节点标签为node.longhorn.io/managed=true)
              - key: node.longhorn.io/managed
                operator: NotIn
                values:
                - "true"
      # 如果目标节点有污点,需要添加容忍规则(可选)
      tolerations:
      - key: "worker-only"
        operator: "Exists"
        effect: "NoSchedule"
  router:
    instances: 1
    version: 8.3.0
    # 配置Router Pod的调度规则(与MySQL实例一致,按需调整)
    podTemplate:
      spec:
        nodeSelector:
          node-type: worker
        affinity:
          nodeAffinity:
            requiredDuringSchedulingIgnoredDuringExecution:
              nodeSelectorTerms:
              - matchExpressions:
                - key: node-role.kubernetes.io/master
                  operator: DoesNotExist
                - key: node.longhorn.io/managed
                  operator: NotIn
                  values:
                  - "true"
  datadirVolumeClaimTemplate:
    accessModes:
      - ReadWriteOnce
    resources:
      requests:
        storage: 4Gi
  mycnf: |
    [mysqld]
    max_connections=150

关键配置说明

  • nodeSelector:直接匹配带有指定标签的节点,比如示例中的node-type=worker,确保Pod只调度到标记为Worker的节点。
  • nodeAffinity:通过DoesNotExist或NotIn规则,强制排除带有Master角色标签或Longhorn管理标签的节点,避免Pod被调度到这些节点上。
  • tolerations:如果目标Worker节点存在污点(Taint),需要添加对应的容忍规则,否则Pod无法调度到这些节点。
  • Router Pod调度:如果需要Router也避开指定节点,在spec.router.podTemplate中添加相同的调度配置即可。

内容的提问来源于stack exchange,提问作者user23316105

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.07.01 08:32:30