pod 间的亲缘性.

16.3.1 使用 pod 间亲缘性将多个 pod 部署在同一个节点上

创建一个后端 pod:

  • -l 指定了标签

image.png

在 pod 定义中指定 pod 亲缘性

前端 pod yaml:

image.png

  • topology: 拓扑
  • 该部署将创建包含强制性要求的 pod ,其中要求 pod 将被调度到和其他包含 app=backeηd 标签的 pod 所在的相同节点上(通过topologyKey 宇段指定)

image.png

部署包含 pod 亲缘性的 pod

查看后端 pod 所在节点:

image.png

部署前端 pod 并观察所在节点:

image.png

了解调度器如何使用 pod 亲缘性规则

如果现在你删除了后端 pod ,调 度器会将该 pod 调度到口 od e2 , 即便后端 pod 本身没有定义任何 pod 亲缘性规则(只有前端 pod 设置了规 则) 。这种情况很合理,因为假设后端 pod 被误删除而被调度到其他节点上, 前端 pod 的 亲缘性规则就被打破了 。

查看日志:

image.png

16.3.2 将 pod 部署在同一机柜, 可用性区域或者地理地域

在同一个可用性区域中协同部署 pod

设置 topologyKey 为 failure-domain.beta.kubernetes.io/zone

在同一个地域中协同部署 pod

设置 topologyKey 为 failure-domain.beta.kubernetes.io/region

了解 topologyKey 是如何工作的

就是利用标签.

image.png

16.3.3 表达 pod 亲缘性优先级取代强制性要求

image.png

image.png

16.3.4 利用 pod 的非亲缘性分开调度 pod

希望 pod 原理彼此.

  • podAntiAffinity

image.png

  • 远离

使用非亲缘性分散一个部署中的 pod

image.png

理解 pod 非亲缘性优先级

preferredDuringSchedulingIgnoredDuringExecution 字段

与使用 pod 亲缘 性 一 样, topologyKey 宇段决定了 pod 不能被调度的范围 。可以使用这个字段决定 pod 不能被调 度 到同 一 个机柜、 可 用性 区域 、地域,或者任何你创建的自定 义节点标签标示的范围 。