PodSpec.NodeName的值为空需要调度,不为空不需要调度。过程是首先过滤掉不满足条件的节点,称为预选;然后是对通过的节点按照优先级排序,这个是优选;集群最后是选择优先级最高的节点。
预选有一系列的算法,常见如下:PodFitsResources,PodFitsHost,PodFitsHostPorts,PodSelectorMatches和NoDiskConflict。
优选由键值对组成,键是名称,值是权重。LeastRequestedPriority,Balance优势dResourceAllocation和ImageLocalityPriority。
自己编写调度器,通过 spec:schedulername 参数指定意思调度器的名字,可以为 pod 选择某个调度器进行调度。
节点亲和性是选择node,分为软策略preferredDuringSch亲和edulingIgnoredDuringExecution和硬策略requiredDuringSchedulingIgnoredDuringExecution。
[root@z优势r-k8s-master01 affinity]# cat nodeAffinity.yaml
apiVersion: v1
kind: Pod
metadata:
name: affinity
labels:
app: node-affinity-pod
spec:
containers:是什么
- name: with-node-affinity
image: ikubernetes/myapp:v1
affinity:
意思 nodeAffinity:
requiredDuringSchedulingIgnoredDuringExecution:
nodeSelectorTerms:
- matchExpressions:
- key: kubernetes.io/hostname
是什么 operator: NotIn #表示出了下面的value里面的亲和主机,都可以
values:
- zr-k8s-node2
preferredDuringSchedulingIgnoredDuringExecution:
- weight: 1 #权重集群越大越亲和
preference:
matchExpressions:
- key: kubernetes.io/hostname
式 operator: In
values:
- zr-k8s-n式ode3
kubectl get node --show-labels
kubectl apply -f nodeAffinity.yaml
结果是pod运行在node1上,因为下面的软亲和决定了它可以运行在node3上,但是这里面没有node3那就运行在node1上去。
版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容, 请发送邮件至123456@qq.com 举报,一经查实,本站将立刻删除。