计算机系统应用教程网站

网站首页 > 技术文章 正文

「Kubernetes」第八章:集群调度-节点亲和性

btikc 2024-09-04 03:09:09 技术文章 12 ℃ 0 评论

PodSpec.NodeName的值为空需要调度,不为空不需要调度。过程是首先过滤掉不满足条件的节点,称为预选;然后是对通过的节点按照优先级排序,这个是优选;最后是选择优先级最高的节点。

预选有一系列的算法,常见如下:PodFitsResources,PodFitsHost,PodFitsHostPorts,PodSelectorMatches和NoDiskConflict。

优选由键值对组成,键是名称,值是权重。LeastRequestedPriority,BalancedResourceAllocation和ImageLocalityPriority。

自己编写调度器,通过 spec:schedulername 参数指定调度器的名字,可以为 pod 选择某个调度器进行调度。

节点亲和性是选择node,分为软策略preferredDuringSchedulingIgnoredDuringExecution和硬策略requiredDuringSchedulingIgnoredDuringExecution。

[root@zr-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-node3

kubectl get node --show-labels

kubectl apply -f nodeAffinity.yaml

结果是pod运行在node1上,因为下面的软亲和决定了它可以运行在node3上,但是这里面没有node3那就运行在node1上去。

Tags:

本文暂时没有评论,来添加一个吧(●'◡'●)

欢迎 发表评论:

最近发表
标签列表