使用亲和力将两个 kubernetes pods 与未知标签值分开
Using affinity to keep two kubernetes pods apart with unknown label values
想象一下我有一些 pods 我需要在单独的 k8s 节点上,如果我知道 pods 都有一个标签 my/label=somevalue
我可以使用这样的东西
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
podAffinityTerm:
labelSelector:
matchLabels:
my/label: somevalue
我有一些 pods 我需要根据同一标签的多个值进行分隔,这些值是事先不知道的(它是由运算符计算的共享密钥)。
有没有一种方法可以指定一个 podAffinityTerm
,它适用于共享相同值 my.label
的任何 pods,而不考虑实际值?
例如
Pod a has my/label=x
Pod b has my/label=x
Pod c has my/label=y
Pod d has my/label=y
我需要 pods a 和 b 彼此分开,并且 pods c 和 d 彼此分开,但是例如a和d可以共存于同一个节点
据我所知,没有内置方法可以在不知道标签值的情况下指定亲和力。在创建 pod 阶段,您需要同时提供键和值。为了让 affinity 正常工作,你需要在创建时知道这个值,并把它放在合适的 yaml 文件中。
理论上,您可以创建自定义脚本,例如在 bash 中,这将为您带来价值
its a sharding key which is calculated by an operator
然后在yaml文件中替换它。这样在创建pod的时候就可以正确设置了。
此外,您还可以看看Well-Known Labels, Annotations and Taints。
根据您的具体情况,您可以尝试与他们一起解决问题。另见 this page。在那里您会找到有关将 pod 分配给节点的所有信息。
想象一下我有一些 pods 我需要在单独的 k8s 节点上,如果我知道 pods 都有一个标签 my/label=somevalue
affinity:
podAntiAffinity:
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 2
podAffinityTerm:
labelSelector:
matchLabels:
my/label: somevalue
我有一些 pods 我需要根据同一标签的多个值进行分隔,这些值是事先不知道的(它是由运算符计算的共享密钥)。
有没有一种方法可以指定一个 podAffinityTerm
,它适用于共享相同值 my.label
的任何 pods,而不考虑实际值?
例如
Pod a has my/label=x
Pod b has my/label=x
Pod c has my/label=y
Pod d has my/label=y
我需要 pods a 和 b 彼此分开,并且 pods c 和 d 彼此分开,但是例如a和d可以共存于同一个节点
据我所知,没有内置方法可以在不知道标签值的情况下指定亲和力。在创建 pod 阶段,您需要同时提供键和值。为了让 affinity 正常工作,你需要在创建时知道这个值,并把它放在合适的 yaml 文件中。
理论上,您可以创建自定义脚本,例如在 bash 中,这将为您带来价值
its a sharding key which is calculated by an operator
然后在yaml文件中替换它。这样在创建pod的时候就可以正确设置了。
此外,您还可以看看Well-Known Labels, Annotations and Taints。
根据您的具体情况,您可以尝试与他们一起解决问题。另见 this page。在那里您会找到有关将 pod 分配给节点的所有信息。