27Kubernetes资源pod污点和容忍度2_第1页
27Kubernetes资源pod污点和容忍度2_第2页
27Kubernetes资源pod污点和容忍度2_第3页
27Kubernetes资源pod污点和容忍度2_第4页
27Kubernetes资源pod污点和容忍度2_第5页
已阅读5页,还剩23页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

Kubernetes资源Pod污点和容忍度2目录Pod污点和容忍度01任务Pod亲和性02任务学习目标【知识目标】掌握Kubernetes资源对象pod的基本使用。【技能目标】能够掌握Kubernetes资源对象pod污点和容忍度。1Pod亲和性1第一个pod随机选则一个节点,做为评判后续的pod能否到达这个pod所在的节点位置上的运行方式,这就称为pod亲和性;以节点名称为标准,节点名称相同的表示是同一个位置,节点名称不相同的表示不是一个位置。Pod亲和性1理想的实现方式是允许调度器把第一个Pod放置在任何位置,而后与其有着亲和或反亲和关系的其他Pod据此动态完成位置编排,这就是Pod亲和调度与反亲和调度的功用。Pod间的亲和关系也存在强制亲和及首选亲和的区别。Pod亲和性1pod自身的亲和性调度有两种表示形式:podaffinity和podAntiaffinity,亲和度和反亲和度。podaffinity:主要解决Pod可以和哪些Pod部署在同一个拓扑域中的问题,其中拓扑域用主机标签实现,可以是单个主机,也可以是多个主机组成的cluster、zone等。podAntiaffinity:主要是解决Pod不能和哪些Pod部署在同一个拓扑域中的问题。Pod亲和性1查看podAffinity亲和性[root@master1~]#kubectlexplainpods.spec.affinity.podAffinityFIELDS:

preferredDuringSchedulingIgnoredDuringExecution <[]Object>

requiredDuringSchedulingIgnoredDuringExecution <[]Object>[root@master1~]#kubectlexplainpods.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecutionFIELDS:

labelSelector <Object>

namespaces <[]string>

topologyKey <string>-required-[root@master1~]#kubectlexplainpods.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelectorFIELDS:

matchExpressions <[]Object>

matchLabels <map[string]string>Pod亲和性podAffinity1硬亲和性requiredDuringSchedulingIgnoredDuringExecution参数:labelSelector:Pod标签选择器,用于指定该Pod将针对哪类现有Pod的位置来确定可放置的位置。namespace:用于指示labelSelector字段的生效目标名称空间,默认为当前Pod所属的同一名称空间。topologyKey:位置拓扑的键,这个是必须字段,怎么判断是不是同一个位置,用来划分拓扑结构的节点标签,在指定的键上具有相同值的节点归属为同一拓扑;Pod亲和性podAffinity1[root@master1]#kubectldeletepodspod-first[root@master1~]#catpod-required-affinity-demo.yamlapiVersion:v1kind:Podmetadata:name:pod-first

labels:

app2:myapp2tier:frontendspec:containers:-name:myappimage:iKubernetes/myapp:v1Pod亲和性硬亲和实例---。。。spec:affinity:

podAffinity:requiredDuringSchedulingIgnoredDuringExecution:-labelSelector:matchExpressions:

-{key:app2,operator:In,values:["myapp2"]}topologyKey:Kubernetes.io/hostname1部署应用,查看Pod调度[root@master1~]#kubectlapply-fpod-required-affinity-demo.yaml[root@master1~]#kubectlgetpods-owidepod-first

runningnode1pod-secondrunningnode1完成后删除Pod[root@master1~]#kubectldelete-fpod-required-affinity-demo.yamlPod亲和性硬亲和实例1[root@master1~]#catpod-required-anti-affinity-demo.yamlapiVersion:v1kind:Podmetadata:name:pod-firstlabels:

app1:myapp1tier:frontendspec:containers:-name:myappimage:iKubernetes/myapp:v1Pod亲和性反亲和实例---。。。spec:affinity:

podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:-labelSelector:matchExpressions:

-{key:app1,operator:In,values:["myapp1"]}topologyKey:Kubernetes.io/hostname1部署应用,查看Pod调度[root@master1~]#kubectlapply-fpod-required-anti-affinity-demo.yaml[root@master1~]#kubectlgetpods-owidepod-first

runningnode1pod-secondrunningnode2完成后删除Pod[root@master1~]#kubectldelete-fpod-required-anti-affinity-demo.yamlPod亲和性反亲和实例2Pod污点和容忍度2污点Taint则使节点能够排斥一类特定的Pod,污点是节点的属性,定义在nodeSelector上。容忍度Toleration

是应用于Pod上的。容忍度允许调度器调度带有对应污点的Pod。容忍度允许调度但并不保证调度:作为其功能的一部分,调度器也会评估其他参数。污点和容忍度相互配合,可以用来避免Pod被分配到不合适的节点上。每个节点上都可以应用一个或多个污点,这表示对于那些不能容忍这些污点的Pod,是不会被该节点接受的。Pod污点和容忍度2查看污点taints的字段:[root@master1~]#kubectlexplainnode.spec.taints。。。FIELDS:effect <string>-required-key <string>-required-timeAdded <string>value <string>Pod污点和容忍度taints2taints的effect字段用来定义对pod对象的排斥等级:NoSchedule:仅影响pod调度过程,当pod能容忍这个节点污点,就可以调度到当前节点,后来这个节点的污点改了,加了一个新的污点,使得之前调度的pod不能容忍了,那这个pod会怎么处理,对现存的pod对象不产生影响NoExecute:既影响调度过程,又影响现存的pod对象,如果现存的pod不能容忍节点后来加的污点,这个pod就会被驱逐PreferNoSchedule:最好不,也可以,是NoSchedule的柔性版本Pod污点和容忍度taints2在pod对象定义容忍度的时候支持两种操作:等值密钥:key和value上完全匹配存在性判断:key和effect必须同时匹配,value可以是空在pod上定义的容忍度可能不止一个,在节点上定义的污点可能多个,需要琢个检查容忍度和污点能否匹配,每一个污点都能被容忍,才能完成调度。Pod污点和容忍度Toleration2查看master1节点的污点:[root@master1affinity]#kubectldescribenodesmaster1Taints:node-role.Kubernetes.io/master:NoSchedulePod污点和容忍度2给node2打污点[root@master1~]#kubectltaintnodenode2node-type=production:NoSchedule编写yaml文件[root@master1~]#catpod-taint.yaml。。。spec:containers:-name:taint-podports:-containerPort:8080image:tomcat:8.5-jre8-alpineimagePullPolicy:IfNotPresentPod污点和容忍度NoSchedule示例2部署应用[root@master1~]#kubectlapply-fpod-taint.yaml[root@master1~]#kubectlgetpods-owide显示如下:taint-podrunningnode1pod没有容忍度,不会调度到node2Pod污点和容忍度NoSchedule示例2给node1创建污点[root@master1~]#kubectltaintnodenode1node-type=dev:NoExecute[root@master1~]#kubectlgetpods-owide显示如下:taint-podtermaiteringPod污点和容忍度NoExecute示例2添加容忍度[root@master1~]#catpod-demo-1.yaml。。。spec:containers:-name:myappimage:iKubernetes/myapp:v1ports:-name:httpcontainerPort:80tolerations:-key:"node-type"operator:"Equal"value:"production"effect:"NoExecute"tolerationSeconds:3600Pod污点和容忍度tolerations示例2[root@master1~]#kubectlapply-fpod-demo-1.yaml[root@master1~]#kubectlgetpodsmyapp-deploy1/1Pending011snode2显示pending,因为我们使用的是equal等值匹配,所以key和value,effect必须和node节点定义的污点完全匹配才可以。Pod污点和容忍度tolerations示例2修改yaml文件[root@master1~]#catpod-demo-1.yaml。。。spec:containers:-name:myappimage:iKubernetes/myapp:v1ports:-name:httpcontainerPort:80tolerations:-key:"n

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

最新文档

评论

0/150

提交评论