我正在尝试创建一个部署,该部署创建两个 Pod,其节点 IP 与两个现有 Pod 匹配。为此,我将 PodAffinity 定义如下
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 }}"
由于我要在其中创建新 pod 的命名空间与我引用现有 pod 的命名空间不同,因此 PodAffinity 失败。Pod 仍处于待处理状态,当我确实描述 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-affinity-and-anti-affinity-alpha-feature发现,我应该在 PodAffinity 和将其初始化为空列表以允许跨命名空间 PodAffinity。
但是我没有从网上得到任何关于如何将命名空间初始化为空列表的例子。
请在这方面需要帮助。