k8s
组件 资源清单
pod 生命周期
pod 控制器
服务发现
runcher
KubeSphere
Helm
helm命令
helm 常用内置对象
helm 内置函数
helm 的逻辑 和 流程控制
helm 中变量在作用域、列表、元祖、字典中的引用
helm 使用define定义子模版、template和include调用
helm 获取其他文件的内容和文件名
社区的Helm chart仓库
helm几个常用仓库
存储 configMap
进入k8s pod
k8s Node节点的调试
k8s 部署
sealos 部署
kubeadm 1.28部署
增加 node 节点
在aws 上自建k8s
利用NFS动态提供Kubernetes后端存储卷
rook-ceph
CephFS挂载
Ceph Dashboard
ingress
k8s集成kube-prometheus
ServiceMonitor 添加配置
Prometheus 长期远程存储方案 VictoriaMetrics
解决ControllerManager、Scheduler、watchdog监控问题
抓取配置说明
kubernetes配置imagePullSecrets秘钥来拉取镜像
在 Kubernetes 裡跑 curl 來測試內部服務
MetalLB
cloudflare-tunnel-ingress-controller
K8S kubectl 自动补全
argocd
helm部署redis-culster集群
改变默认 StorageClass
自定义指标HPA
istio
kiali
k8s接入graylog
Labels
DNS
HPA
ConfigMap挂载导致容器目录覆盖的问题
污点容忍度
身份认证与权限 RBAC
command
运行crictl ps -a 报错
etcd
cka证书
cert-manager
Kubernetes 创建普通账号
部署 metrics-server 指标
deployment 重启
Kubernetes中如何优雅的解决Pod时区问题
alertmanager
oom killed
eks挂载efs
eks创建集群
eksctl awscli kubectl
污点和容忍度
Kubernetes 删除namespace Terminating解决脚本
k8s 部署 kafka 集群
ack ingress获取客户端客户端真实IP
ingress 反向代理 ws
本文档使用 MrDoc 发布
-
+
首页
污点和容忍度
* 污点(Taints):定义在节点上,用于拒绝Pod调度到此节点,除非该Pod具有该节点上的污点容忍度。被标记有Taints的节点并不是故障节点。 * 容忍度(Tolerations):定义在Pod上,用于配置Pod可容忍的节点污点,K8S调度器只能将Pod调度到该Pod能够容忍的污点的节点上。 ![](/media/202403/2024-03-20_161916_3501020.09253101257682061.png) ## 排斥等级 Node对Pod对象的排斥等级有3种: * NoSchedule:没有配置此污点容忍度的新Pod不能调度到此节点,节点上现存的Pod不受影响。 * PreferNoSchedule:没有配置此污点容忍度的新Pod尽量不要调度到此节点,如果找不到合适的节点,依然会调度到此节点。 * NoExecute:没有配置此污点容忍度的新Pod对象不能调度到此节点,节点上现存的Pod会被驱逐。 ### 1.3、容忍度操作符 在Pod上定义容忍度时,它支持两种操作符:Equal和Exists。 * Equal:容忍度与污点必须在key、value和effect三者完全匹配。 * Exists:容忍度与污点必须在key和effect二者完全匹配,容忍度中的value字段要使用空值。 ## 2.1、管理节点污点 给节点添加污点: ``` kubectl taint nodes node01 key=value:effect ``` 给节点删除污点,此处的effect可以没有 ``` kubectl taint nodes node01 key[:effect]- ``` ##2.2、管理Pod的容忍度 上文中提到了,容忍度的操作符有2种:Equal和Exists,同时把排斥等级也要加上。 使用Equal的场景: ``` tolerations: - key: "key" operator: "Equal" value: "value" effect: "NoExecute" ``` 使用Exists的场景: ``` tolerations: - key: "key" operator: "Exists" effect: "NoExecute" ``` 如果Node上污点的排斥等级是NoExecute时,该Node上正在运行的Pod如果没有该污点的容忍度,就会被立刻驱逐。不过系统增加了tolerationSeconds字段,用来延迟驱逐Pod。 tolerationSeconds字段的意思是:如果 Pod 的容忍度配置里存在排斥等级为 NoExecute ,并且指定了属性 tolerationSeconds 的值,那么Pod 还能继续在该节点上运行的时间(单位为秒): ``` tolerations: - key: "key" operator: "Equal" value: "value" effect: "NoExecute" tolerationSeconds: 3600 ``` # 例子 先给node 打上污点 Taints: nat=1:NoExecute ``` kubectl describe nodes | grep Taints ``` ``` apiVersion: apps/v1 kind: Deployment metadata: name: nginx-deployment-nat labels: app: nginx spec: replicas: 40 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: #-------------- nodeSelector: "nat": "1" #-------------- tolerations: - key: "nat" operator: "Equal" value: "1" effect: "NoExecute" #-------------- containers: - name: nginx image: nginx:latest ports: - containerPort: 80 ```
admin
2024年3月20日 16:25
转发文档
收藏文档
上一篇
下一篇
手机扫码
复制链接
手机扫一扫转发分享
复制链接
Markdown文件
分享
链接
类型
密码
更新密码