东莞网站建设公司好,长沙网站建设好处,网站开发技术规范要求,中国造价网官网文章目录 一、概念二、相关操作三、实操污点NoSchedule四、实操污点NoExecute五、实操容忍 一、概念 污点与容忍 污点taints定义在节点之上的键值型属性数据。当节点被标记为有污点#xff0c;那么意味着不允许pod调度到该节点。 容忍tolerations是定义在 Pod对象上的键值型属… 文章目录 一、概念二、相关操作三、实操污点NoSchedule四、实操污点NoExecute五、实操容忍 一、概念 污点与容忍 污点taints定义在节点之上的键值型属性数据。当节点被标记为有污点那么意味着不允许pod调度到该节点。 容忍tolerations是定义在 Pod对象上的键值型属性数据。被打上污点的节点如果同时被pod标记为可以容忍污点的节点则允许pod调度到该节点。。 ps在使用kubeadm部署的k8s集群的时候应该会发现通常情况下应用不会调度到master节点。因为默认给master节点加了污点。 1污点一般打在节点上且一个节点可以配置使用多个污点 2容忍是标注在pod资源控制器上的。一个Pod资源控制器也可以有多个容忍度。启动pod一般不会调度在有污点的节点上除非该pod标注了这些污点的容忍才可以被调度。 污点配置类型 1Noschdule如果Pod不能忍受这类污点则该污点节点后续不会进行pod调度已经创建的pod不会受到影响。 2NoExecute如果Pod不能忍受这类污点则该污点节点会马上驱除该节点上所有非kube-system空间的所有pod节点。 3PreferNoSchedule NoSchedule的软约束即该污点节点后续基本不会进行pod调度但是无其他节点可供调度时才允许调度到该节点。已经创建的pod不会受到影响。
二、相关操作 为节点打上污点kubectl taint node kas-master keyvalue:Noschedule 移除污点kubectl taint node k8s-master keyvalue:Noschedule- 查看污点指令kubectl taint -h pod配置容忍 # pod的 spec下面配置容忍
tolerations:
- key: 污点的 keyvalue: 污点的valueoffect: NoSchedule #污点产生的影响operator: Equal #1.Equalpod和节点的keyvalue都要相等。2.Existspod和节点的key相等即可。tolerationSeconds: 时间(s) #tolerationSeconds不设置则Pod会一直在满足容忍的节点上一直执行。三、实操污点NoSchedule 给worker1节点打上污点kubectl taint no worker1 key1value1:NoSchedule 查看节点 kubectl describe no worker1 编写yaml清单vi deployment-nginx.yaml apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-nginx #Deployment 的名称labels:app: nginx
spec:replicas: 3 # 创建 Pod 的副本数selector: #定义 Deployment 如何找到要管理的 Pod与 template 的 label标签对应matchLabels:app: nginxtemplate: #字段包含以下字段metadata:labels:app: nginx #使用 label标签标记 Podspec: #表示 Pod 运行一个名字为 nginx 的容器containers:- name: nginximage: nginx:1.15 #表示 Pod 运行一个名字为 nginx 的容器ports: #容器用于发送和接收流量的端口- containerPort: 80创建kubectl apply -f deployment-nginx.yaml 查看发现worker1上面没有调度podkubectl get pod -o wide 移除污点kubectl taint no worker1 key1value1:NoSchedule-
四、实操污点NoExecute 删除所有podkubectl delete -f deployment-nginx.yaml 重新部署kubectl apply -f deployment-nginx.yaml 查看kubectl get pod -o wide 设置NoExecutekubectl taint no worker1 key1value1:NoExecute 查看节点kubectl get pod -o wide ps可以看到除了kube-system空间以外的其他空间所有worker1上的pod都被驱除
五、实操容忍 在deployment-nginx上设置污点容忍然后再次查看vi deployment-nginx.yaml tolerations:
- key: key1operator: Equalvalue: value1effect: NoExecute完整配置 apiVersion: apps/v1
kind: Deployment
metadata:name: deployment-nginxlabels:app: nginx
spec:replicas: 3selector:matchLabels:app: nginxtemplate:metadata:labels:app: nginxspec:tolerations:- key: key1operator: Equalvalue: value1effect: NoExecutecontainers:- name: nginximage: nginx:1.15ports:- containerPort: 80更新kubectl apply -f deployment-nginx.yaml 查看podkubectl get pod -o wide 测试完还原删除污点kubectl taint no worker1 key1value1:NoExecute-