我正在尝试创建一个部署,该部署创建了两个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: []