K8S----taint、tolerations、label

本文详细介绍了Kubernetes中的污点、容忍度和标签概念。污点是针对节点的,通过设置污点,可以控制哪些Pod可以被调度到特定节点。容忍度则是Pod的属性,允许Pod容忍某些节点的污点。文章还探讨了effect字段的不同值,并展示了如何给Pod和节点添加、修改和删除标签。

一、污点(taint),针对的是节点,只有node才有污点的概念

1、 给节点增加一个污点

kubectl taint nodes node1 key1=value1:NoSchedule

给节点 node1 增加一个污点,它的键名是 key1,键值是 value1,效果是 NoSchedule。 这表示只有拥有和这个污点相匹配的容忍度的 Pod 才能够被分配到 node1 这个节点

2、移除上述命令所添加的污点

kubectl taint nodes node1 key1=value1:NoSchedule-

3、移除key为key1的,作用是NoSchedule的所有污点

kubectl taint nodes foo key1:NoSchedule-
### 原因 K8S 容器显示 Pending 状态,可能是由于节点亲性不匹配资源不足导致。例如,出现 `0/3 nodes are available: 1 node(s) didn't match Pod's node affinity, 2 Insufficient cpu` 提示,说明有 1 个节点不满足 Pod 的节点亲性规则,另外 2 个节点 CPU 资源不足,从而使 Pod 无法被调度到合适的节点上。也可能是节点存在污点,而 Pod 没有设置相应的容忍度,如 `1 node(s) had taint {node-role.kubernetes.io/master: }, that the pod didn't tolerate` 情况,会造成 Pod 无法调度到该节点,导致处于 Pending 状态 [^1][^5]。 ### 解决方案 #### 解决节点亲性不匹配问题 - **检查调整节点标签**:使用 `kubectl get nodes --show-labels` 查看节点标签,确保节点上有与 Pod 节点亲性规则相匹配的标签。若没有合适标签,可使用 `kubectl label nodes <node-name> <label-key>=<label-value>` 为节点添加标签。 - **修改 Pod 亲性规则**:若节点标签无法更改,可修改 Pod 的 YAML 文件中的节点亲性规则,使其与现有节点标签匹配。示例如下: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: affinity: nodeAffinity: requiredDuringSchedulingIgnoredDuringExecution: nodeSelectorTerms: - matchExpressions: - key: <label-key> operator: In values: - <label-value> containers: - name: my-container image: my-image ``` #### 解决资源不足问题 - **调整 Pod 的资源请求**:修改 Pod 的 YAML 文件,降低 CPU 请求值,示例如下: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: containers: - name: my-container image: my-image resources: requests: cpu: "2" limits: cpu: "3" ``` - **添加新节点**:若集群资源确实不足,可添加新的节点到 Kubernetes 集群中,以提供更多的 CPU 资源。 - **优化现有节点资源使用**:查看现有节点上运行的 Pod,对于资源利用率不高的 Pod,可调整其资源请求限制,释放更多的 CPU 资源。 #### 解决节点污点问题 检查节点的污点情况,使用 `kubectl describe node <node-name>` 查看节点污点信息。若节点存在污点,可在 Pod 的 YAML 文件中添加容忍度设置,示例如下: ```yaml apiVersion: v1 kind: Pod metadata: name: my-pod spec: tolerations: - key: "node-role.kubernetes.io/master" operator: "Exists" effect: "NoSchedule" containers: - name: my-container image: my-image ```
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值