c语言sscanf函数的用法是什么
285
2022-09-12
k8s的高级调度方式
默认的scheduler的调度过程:1.预选策略:从所有节点当中选择基本符合选择条件的节点。2.优选函数:在众多符合基本条件的节点中使用优选函数,计算节点各自的得分,通过比较进行排序。3.从最高得分的节点中随机选择出一个作为Pod运行的节点。可以通过自己的预设来影响预选、优选过程,从而实现符合我们期望的调度结果。影响调度方式: 1.节点选择器:NodeSelector,甚至可以设置nodename来选择节点本身。 2.亲和性调度:NodeAffinity(节点亲和性)、podAffinity(Pod亲和性)、PodAntiAffinity(Pod的反亲和性) 3.污点和容忍度:Taint、toleration1.节点选择器:NodeSelector(pod.spec.nodeSelector) 如果我们期望把Pod调度到某一个特定的节点上,可以通过设定Pod.spec.nodeName给定node名称实现。 我们可以给一部分node打上特有标签,在pod.spec.nodeSelector中匹配这些标签。可以极大的缩小预选范围。 给node添加标签: kubectl label nodes NODE_NAME key1=value1...keyN=valueN 如:在node01上打上标签为app=frontend,而在pod上设置NodeSelector为这个标签,则此Pod只能运行在存在此标签的节点上。 若没有node存在此标签,则Pod无法被调度,即为Pending状态。2.亲和性调度:Affinity(pod.spec.affinity) (1)节点亲和性:NodeAffinity(pod.spec.affinity.nodeAffinity) 表示Pod更倾向被调度在与节点亲和度高的节点上 pod.spec.affinity.nodeAffinity.下有两种定义方式:
1 preferredDuringSchedulingIgnoreDuringExecution:软亲和性;不管节点上能否满足设定条件,Pod都可以被调度,只是Pod优先被调度到符合条件多的节点上。
2 - preference:##与相应权重相关联的节点选择器项。
3 matchExpressions:##按节点标签列出的节点选择器要求列表
4 - key: ##键
5 operator:##表示键与一组值的关系。有效的运算符有:In、NotIn、Exist、DoesNotExsit。GT和LT
6 values: ##值;若operator为In或NotIn则值必须为非空;若operator为Exists或DoesNotExist则值必须为空;若operator为Gt或Lt则值必须有一个元素。
7 matchFields:##按节点字段列出的节点选择器要求列表
8 - key: ##键
9 operator:##表示键与一组值的关系。有效的运算符有:In、NotIn、Exist、DoesNotExsit。GT和LT
10 values: ##值;若operator为In或NotIn则值必须为非空;若operator为Exists或DoesNotExist则值必须为空;若operator为Gt或Lt则值必须有一个元素。
11 weight: ##权重,0~100的数值
1 requiredDuringSchedulingIgnoreDuringExecution: 硬亲和性;节点必须满足设定条件,Pod才能被调度到这个节点。
2 nodeSelectorTerms: ##节点选择器列表
3 - matchExpressions:##按节点标签列出的节点选择器要求列表
4 - key: ##键
5 operator:##表示键与一组值的关系。有效的运算符有:In、NotIn、Exist、DoesNotExsit。GT和LT
6 values: ##值;若operator为In或NotIn则值必须为非空;若operator为Exists或DoesNotExist则值必须为空;若operator为Gt或Lt则值必须有一个元素。
7 matchFields:##按节点字段列出的节点选择器要求列表
8 - key: ##键
9 operator:##表示键与一组值的关系。有效的运算符有:In、NotIn、Exist、DoesNotExsit。GT和LT
10 values: ##值;若operator为In或NotIn则值必须为非空;若operator为Exists或DoesNotExist则值必须为空;若operator为Gt或Lt则值必须有一个元素。
例:硬亲和性,pod只会被调度到存在zone=foo或zone=bar标签的节点上,若没有节点存在此标签,则pod将不会被调度到任何节点上,即为Pending状态。自主式pod的资源清单:
1 apiVersion: v1
2 kind: Pod
3 metadata:
4 name: pod-node-affinity
5 namespace: default
6 spec:
7 containers:
8 - name: myapp
9 image: kubernetes/myapp:v1
10 affinity:
11 nodeAffinity:
12 requiredDuringSchedulingIgnoredDuringExecution:
13 nodeSelectorTerms:
14 - matchExpressions:
15 - key: zone
16 operator: In
17 values:
18 - foo
19 - bar
(2)Pod亲和性:podAffinity(pod.spec.affinity.podAffinity) 表示一组pod更倾向与运行在一起,一般需要高效通信时需要将pod与pod运行在相近的位置。 第一个pod被调度到某一个节点,第二个pod会跟随第一个pod运行在同一个位置相近的节点上。 同一个位置的节点不一定是同一个节点,这个节点可能是同一个命名空间、网段、机柜、机房、甚至同一个区域的某一个节点上。 因为如果说,同一个节点上的资源不足时,pod被调度不到同一个节点,那么就会找与这个节点相近的某个节点上。 节点相近是指节点到节点的网络路程较近。 当然,若资源空间充足也可以实现让第二个Pod跟随第一个pod运行在同一个节点上。 可以根据topologyKey设定的标签来判定拥有哪些标签的节点属于同一位置 与节点亲和性一样,pod.spec.affinity.podAffinity.下也有两种定义方式:
1 preferredDuringSchedulingIgnoreDuringExecution:软亲和性;不管节点上能否满足设定条件,Pod都可以被调度,只是Pod优先被调度到符合条件多的节点上。
2 podAffinityTerm: ##定义一组pods(即与相对于此pod应位于(关联)或不在同一地点(反亲和力),在同一地点被定义为运行在一个节点上,其键
版权声明:本文内容由网络用户投稿,版权归原作者所有,本站不拥有其著作权,亦不承担相应法律责任。如果您发现本站中有涉嫌抄袭或描述失实的内容,请联系我们jiasou666@gmail.com 处理,核实后本网站将在24小时内删除侵权内容。
发表评论
暂时没有评论,来抢沙发吧~