kubernetes 配置 pod 间的反亲和不生效问题

Posted 回归心灵

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了kubernetes 配置 pod 间的反亲和不生效问题相关的知识,希望对你有一定的参考价值。

问题描述

由于某些原因需要配置 pod 间的反亲和规则,不让两个 pod 调度到同一个节点。但是在配置完反亲和后,两个 pod 还是被调度到了同一个节点上。

问题解决

问题的关键是没有指定 namespaces 字段。如果不指定 namespaces 字段,或者指定了 namespaces 字段但是为空,那么作用范围将仅限于该 pod 的命名空间。对于同一个资源的不同副本来说,都是同一个命名空间,不存在该问题。但是要想配置不同类型资源 pod 的反亲和,则要指定 namespaces 字段来限定范围。例如下面编排文件:

apiVersion: v1
kind: Pod
metadata:
  name: with-pod-antiaffinity
  namespace: apollo
spec:
  affinity:
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - monitor-failover-service
        topologyKey: "kubernetes.io/hostname"
        namespaces: [bullyun-other]
  containers:
  - name: with-pod-affinity
    image: docker.io/ocpqe/hello-pod

以上是关于kubernetes 配置 pod 间的反亲和不生效问题的主要内容,如果未能解决你的问题,请参考以下文章

Kubernetes的亲和性和反亲和性

Kubernetes 调度使用介绍(亲和反亲和污点容忍)

Kubernetes 调度使用介绍(亲和反亲和污点容忍)

Kubernetes 调度使用介绍(亲和反亲和污点容忍)

Kubernetes:标签选择器注解容忍度亲和性

Kubernetes——浅聊 Affinity,就这么点东西