Kubernetes (k8s) 污点(Taint)

是一种机制,用于标记一个节点(Node)不可被调度的状态。它可以将一个污点标记添加到节点上,以防止 Pod
被调度到该节点上。污点可以用于实现各种策略,例如分离故障节点、预留节点、限制资源等。

下面是一个使用污点的案例:

假设我们有一个 Kubernetes 集群,其中有一些节点的 CPU 和内存资源使用率较高,我们希望避免在这些节点上启动新的
Pod,以防止导致负载过高。我们可以通过在这些节点上添加污点来实现这一目标,例如:

kubectl taint nodes <node-name> cpu=high:NoSchedule
kubectl taint nodes <node-name> memory=high:NoSchedule

这将在节点上添加两个污点:cpu=high 和 memory=high,它们的值都是 NoSchedule,表示任何带有这些污点的 Pod
都不能被调度到这些节点上。

然后,我们可以在需要避免这些节点的 Pod 上添加对应的容忍度(toleration),例如:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
  tolerations:
  - key: cpu
    operator: Equal
    value: high
    effect: NoSchedule
  - key: memory
    operator: Equal
    value: high
    effect: NoSchedule

这个 Pod 的 toleration 指定了,只有当它的 cpu 和 memory 污点值为 NoSchedule
时,才能被调度到节点上。

通过这种方式,我们就可以通过使用污点和容忍度来控制 Pod 的调度,避免将 Pod 分配到负载过高的节点上。

Logo

K8S/Kubernetes社区为您提供最前沿的新闻资讯和知识内容

更多推荐