Kubernetes亲和性

对于 Kubernetes 中的亲和性(Affinity),强亲和性(Hard Affinity)和弱亲和性(Soft Affinity)之间的主要区别在于容器是否要求绝对满足亲和性规则以进行调度。

强亲和性(Hard Affinity)

示例配置(YAML):

  • 要求满足规则:强亲和性要求容器必须位于满足亲和性规则的节点上,否则容器将无法被调度到集群中。
  • 应用案例:强亲和性适用于必须要求容器在特定节点上运行的情况。例如,您可能希望某个关键的数据库容器始终在特定的高性能节点上运行,以确保数据的快速访问和低延迟。
affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: special-node
          operator: In
          values:
          - database

弱亲和性(Soft Affinity)

  • 不强制满足规则:弱亲和性允许容器在不满足亲和性规则的情况下被调度到集群中,但会尽量优先选择满足规则的节点。
  • 应用案例:弱亲和性适用于您希望容器尽量满足规则,但不强制要求的情况。这可以用于一些非关键的应用容器,使其更有可能在满足条件的节点上运行,但不会使其无法调度到其他节点上。

示例配置(YAML):

affinity:
  nodeAffinity:
    preferredDuringSchedulingIgnoredDuringExecution:
    - weight: 50
      preference:
        matchExpressions:
        - key: special-node
          operator: In
          values:
          - application

在上述示例中,weight表示容器在选择节点时的权重,较高的权重会更有可能使容器在匹配规则的节点上运行,但不会强制要求这一点。

猜你喜欢

转载自blog.csdn.net/summer_fish/article/details/132720300