Kubernetes - pod 由于"No nodes are available that match all of the predicates: MatchInterPodAffinity (



我正在尝试创建一个部署,该部署创建了两个POD,其节点IP与两个exisising Pod匹配。为此,我定义了podaffination

affinity:
    podAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - {{ .Values.albId }}
        topologyKey: "{{ .Values.topologyKey }}"
    podAntiAffinity:
      requiredDuringSchedulingIgnoredDuringExecution:
      - labelSelector:
          matchExpressions:
          - key: app
            operator: In
            values:
            - {{ .Values.name }}
        topologyKey: "{{ .Values.topologyKey }}"

由于我要创建新豆荚的命名空间与我指的是exisitng pods的名称空间不同,因此podaffinity失败了。豆荚仍处于待处理状态,当我描述pod时,我会以下错误

Events:
  FirstSeen LastSeen    Count   From            SubObjectPath   Type        Reason          Message
  --------- --------    -----   ----            -------------   --------    ------          -------
  28s       13s     6   default-scheduler           Warning           FailedScheduling  No nodes are available that match all of the predicates: MatchInterPodAffinity (1).

来自K8S docs- https://kubernetes.io/docs/concepts/configuration/Assign-pod-node/#inter-pod-pod-pod-affinity-alfinity-and-anti-------------- affinity-alpha-feature发现,我应该定义命名空间在podaffinity中并将其初始化为空列表以允许交叉命名空间podaffinity。

,但我没有从网上获得任何示例,例如如何初始化命名空间到寄生列表。

请为此提供帮助。

您链接的文档:

除了LabelSelector和TopologyKey之外,您还可以选择指定标签elector符合的名称空间的列表名称空间(这与LabelSelector和TopologyKey的定义级别相同(。如果省略,它将默认为出现亲和力/抗亲和力定义的POD的名称空间。如果定义但为空,则表示"所有名称空间"

这是基于您的yaml的示例:

affinity:
podAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
  - labelSelector:
      matchExpressions:
      - key: app
        operator: In
        values:
        - {{ .Values.albId }}
    topologyKey: "{{ .Values.topologyKey }}"
    namespaces: [] # empty array
podAntiAffinity:
  requiredDuringSchedulingIgnoredDuringExecution:
  - labelSelector:
      matchExpressions:
      - key: app
        operator: In
        values:
        - {{ .Values.name }}
    topologyKey: "{{ .Values.topologyKey }}"
    namespaces: []

最新更新