1.查看node label
kubectl get nodes --show-labels=true
2.创建label
kubectl label node $(node_name) ?$key=$value
3.更新label
kubectl label --overwrite node ?$(node_name) ?$key=$value
4.删除
kubectl label node $(node_name) ?$key-
Node调度几种模式
首先看一下,我测试环境node label
1.nodeName模式
apiVersion: extensions/v1beta1kind: Deploymentmetadata: ?name: hello-world spec: ?replicas: 3 ?template: ???metadata: ?????labels: ???????k8s-app: hello-world ????spec: ?????nodeName: node1 ?????containers: ?????- name: hello-world ????????image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
2.nodeSelector模式
apiVersion: extensions/v1beta1kind: Deploymentmetadata: ?name: hello-world spec: ?replicas: 3 ?template: ???metadata: ?????labels: ???????k8s-app: hello-world ????spec: ?????nodeSelector: ???????kubernetes.io/hostname: node1 ?????????containers: ?????- name: hello-world ????????image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest
3.affinity模式
kind: DeploymentapiVersion: extensions/v1beta1metadata: ?name: hello-worldspec: ?replicas: 4 ?template: ???metadata: ?????labels: ???????app: hello-world ???spec: ?????containers: ?????- name: hello-world ???????image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest ?????affinity: ???????nodeAffinity: ?????????requiredDuringSchedulingIgnoredDuringExecution: ???????????nodeSelectorTerms: ???????????- matchExpressions: ?????????????- key: "kubernetes.io/hostname" ???????????????operator: NotIn ???????????????values: ["node2"] ?????????preferredDuringSchedulingIgnoredDuringExecution: ?????????- weight: 10 ???????????preference: ?????????????matchExpressions: ?????????????- key: zone ????????????????operator: In ???????????????values: ???????????????- ali
解读:
上面规则说明:除node2节点外,分配到zone=ali标签的node上,反之随机调度
requiredDuringSchedulingIgnoredDuringExecution :硬要求,在调度期间要求满足亲和性或者反亲和性规则,如果不能满足规则,则POD不能被调度到对应的主机上。在之后的运行过程中,系统不会再检查这些规则是否满足。
preferredDuringSchedulingIgnoredDuringExecution:软要求,在调度期间尽量满足亲和性或者反亲和性规则,如果不能满足规则,POD也有可能被调度到对应的主机上。在之后的运行过程中,系统不会再检查这些规则是否满足。
operator四种模式: In NotIn Exists NotExists
Taints and Tolerations (污点和容忍)
运行下面命令,标记节点为污点进行测试
kubectl taint nodes node1 node-role/node1=:NoSchedule
kind: DeploymentapiVersion: extensions/v1beta1metadata: ?name: hello-worldspec: ?replicas: 4 ?template: ???metadata: ?????labels: ???????app: hello-world ???spec: ?????tolerations: ?????- key: node-role/node1 ???????operator: Exists ???????effect: NoSchedule ?????containers: ?????- name: hello-world ???????image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest ?????affinity: ???????nodeAffinity: ?????????requiredDuringSchedulingIgnoredDuringExecution: ???????????nodeSelectorTerms: ???????????- matchExpressions: ?????????????- key: "kubernetes.io/hostname" ???????????????operator: In ???????????????values: ["node1"]
Pod调度模式
kind: DeploymentapiVersion: extensions/v1beta1metadata: ?name: hello-worldspec: ?replicas: 4 ?template: ???metadata: ?????labels: ???????app: hello-world ???spec: ?????containers: ?????- name: hello-world ???????image: registry.cn-qingdao.aliyuncs.com/icommon/hello-world:latest ?????affinity: ???????podAffinity: ?????????requiredDuringSchedulingIgnoredDuringExecution: ?????????- labelSelector: ?????????????matchExpressions: ?????????????- key: k8s-app ???????????????operator: In ???????????????values: ???????????????- redis ?????????????topologyKey: kubernetes.io/hostname ????????podAntiAffinity: ?????????preferredDuringSchedulingIgnoredDuringExecution: ?????????- weight: 1 ???????????podAffinityTerm: ?????????????labelSelector: ???????????????matchExpressions: ???????????????- key: k8s-app ?????????????????operator: NotIn ?????????????????values: ?????????????????- nginx ?????????????topologyKey: kubernetes.io/hostname
kubernetes高级调度简单说明
原文地址:http://blog.51cto.com/2759492/2088997