业务与节点绑定

使用场景

一些边缘业务要求在节点故障时也不要对Pod进行驱逐,它们需要将特定的Pod绑定到特定的节点上。比如图像处理的应用需要绑定到摄像头对应的机器上,智慧交通的应用需要固定在某个路口的机器上。

如何使用

在 OpenYurt 中,用户可以通过以下方式开启/关闭绑定功能。

  1. 修改节点 Annotation

用户可以通过给 Node 添加 Annotation: apps.openyurt.io/binding=true(node.beta.openyurt.io/autonomy已废弃),开启绑定功能,节点上的所有Pod都将绑定到该节点上,不会受云边网络的影响。

  1. # node1 开启节点绑定
  2. kubectl annotate nodes node1 apps.openyurt.io/binding=true

通过以下两种方式的命令,关闭节点绑定。

  1. # 通过删除 annotation 关闭绑定功能
  2. kubectl annotate nodes node1 apps.openyurt.io/binding-
  3. # 通过修改 apps.openyurt.io/binding 值为 false 关闭节点绑定功能
  4. kubectl annotate --overwrite nodes node1 apps.openyurt.io/binding=false

注意事项

  • 边缘节点开启节点绑定功能后,无论是云边网络断连导致的节点NotReady,还是本身节点故障导致的节点NotReady,边缘节点上的业务Pod都不会被驱逐。
  • 云端节点不建议开启节点绑定。如果云端节点开启了绑定,节点为非 Ready 状态时,其业务容器不会被驱逐并重新调度。
  • 在OpenYurt 1.2.0 版本以后,如果开启Pool-Coordinator,边缘节点通过心跳代理机制可以在云边网络断连的情况下仍保持Ready状态。此时节点绑定能力将保障即使节点故障导致NotReady业务Pod也不会被驱逐。