内置污点(二)

2023-05-03 11:25:27 浏览数 (1)

标记有限制的节点

除了标记不可用的节点,我们还可以使用内置污点来标记那些只能运行特定类型Pod的节点。例如,我们可以使用node.kubernetes.io/unreachable污点来标记那些只能运行后端应用的节点,以避免错误地将前端应用调度到这些节点上。

假设我们有三个节点:node1、node2和node3。我们希望只在node2和node3节点上运行后端应用,而不是在node1节点上运行。可以使用kubectl taint命令来添加污点:

代码语言:javascript复制
$ kubectl taint nodes node2 node.kubernetes.io/unreachable=:NoSchedule
$ kubectl taint nodes node3 node.kubernetes.io/unreachable=:NoSchedule

这将在node2和node3节点上添加一个node.kubernetes.io/unreachable的污点,并将影响效果设置为NoSchedule,表示只有带有tolerations的Pod才能在这些节点上运行。

接下来,我们可以在后端应用的Pod模板中添加tolerations。例如:

代码语言:javascript复制
apiVersion: v1
kind: Pod
metadata:
  name: backend-app
spec:
  tolerations:
  - key: "node.kubernetes.io/unreachable"
    operator: "Exists"
    effect: "NoSchedule"
  containers:
  - name: backend-container
    image: backend-app-image

在这个示例中,我们在Pod模板中添加了tolerations字段,这表示我们希望这个Pod能够在带有node.kubernetes.io/unreachable污点的节点上运行。tolerations字段的值为一个列表,其中每个元素表示一个toleration,即Pod容忍的污点。在这个例子中,我们使用了一个Exists的operator,这表示Pod容忍存在node.kubernetes.io/unreachable的污点。当Pod调度到带有这个污点的节点上时,调度器会将这个Pod调度到其他可用的节点上。

0 人点赞