大连网站建设设计,西安mg动画制作网站建设,万网网站建设方法,网店美工考试k8s 集群中可能管理着非常庞大的服务器#xff0c;这些服务器可能是各种各样不同类型的#xff0c;比如机房、地理位置、配置等#xff0c;有些是计算型节点#xff0c;有些是存储型节点#xff0c;此时我们希望能更好的将 pod 调度到与之需求更匹配的节点上。
此时就需要…k8s 集群中可能管理着非常庞大的服务器这些服务器可能是各种各样不同类型的比如机房、地理位置、配置等有些是计算型节点有些是存储型节点此时我们希望能更好的将 pod 调度到与之需求更匹配的节点上。
此时就需要用到污点Taint和容忍Toleration这些配置都是 key: value 类型
1 污点
标注在节点上当我们在一个节点上打上污点以后k8s 会认为尽量不要将 pod 调度到该节点上除非该 pod 上面表示可以容忍该污点且一个节点可以打多个污点此时则需要 pod 容忍所有污点才会被调度该节点
1.1 使用
# 为节点打上污点
kubectl taint node k8s-master keyvalue:NoSchedule
#example:为k8s-node1打上一个污点表示内存低造成影响为NoSchedule
kubectl taint node k8s-node1 memorylow:NoSchedule# 移除污点
kubectl taint node k8s-master keyvalue:NoSchedule-# 查看污点
kubectl describe no k8s-master
1.2 污点的影响 NoSchedule 不能容忍的 pod 不能被调度到该节点但是已经存在的节点不会被驱逐 PreferNoSchedule 尽量不要部署到有该污点的节点上 NoExecute 不能容忍的节点会被立即清除 能容忍且没有配置 tolerationSeconds 属性则可以一直运行 设置了 tolerationSeconds: 3600 属性则该 pod 还能继续在该节点运行 3600 秒
2 容忍
是标注在 pod 上的当 pod 被调度时如果没有配置容忍则该 pod 不会被调度到有污点的节点上只有该 pod 上标注了满足某个节点的所有污点则会被调度到这些节点
# pod 的 spec 下面配置容忍
tolerations:- key: 污点的 keyvalue: 污点的 valueoffect: NoSchedule # 污点产生的影响operator: Equal # 表是 value 与污点的 value 要相等也可以设置为 Exists 表示存在 key 即可此时可以不用配置 value
operator设置与污点进行匹配的规则 Equal对比key和value都相等 Exists只对比key只要key存在即可此时可以不用配置value
apiVersion: v1
kind: Pod
metadata:name: nginxlabels:env: test
spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresenttolerations: # 配置容忍- key: node # 污点的keyvalue: slave # 污点的valueoperator: Exists # 容忍操作effect: NoSchedule # 容忍效果tolerationSeconds: 6000