做问卷不花钱的网站拍卖 网站 建设

张小明 2025/12/27 3:04:15
做问卷不花钱的网站,拍卖 网站 建设,黄陂网站建设,万网域名查询官网一、node节点选择器我们在创建pod资源的时候#xff0c;pod会根据schduler进行调度#xff0c;那么默认会调度到随机的一个工作节点#xff0c;如果我们想要pod调度到指定节点或者调度到一些具有相同特点的node节点#xff0c;怎么办呢#xff1f;可以使用pod中的nodeName…一、node节点选择器我们在创建pod资源的时候pod会根据schduler进行调度那么默认会调度到随机的一个工作节点如果我们想要pod调度到指定节点或者调度到一些具有相同特点的node节点怎么办呢可以使用pod中的nodeName或者nodeSelector字段指定要调度到的node节点。1、nodeName指定pod节点运行在哪个具体node上[rootk8s-master ~]# cat pod-node.yamlapiVersion: v1kind: Podmetadata:name: demo-pod1namespace: defaultlabels:app: myappenv: devspec:nodeName: k8s-node1containers:- name: nginx-nodenameports:- containerPort: 80image: nginximagePullPolicy: IfNotPresent[rootk8s-master ~]# kubectl apply -f pod-node.yaml#查看pod调度到哪个节点[rootk8s-master ~]# kubectl get pods -o wide2、nodeSelector指定pod调度到具有哪些标签的node节点上#给node节点打标签打个具有diskceph的标签[rootk8s-master ~]# kubectl label nodes k8s-node1 nodeworker01#查看节点的详细信息[roothd1 node]# kubectl describe nodes k8s-node1#定义pod的时候指定要调度到具有 nodeworker01标签的node上[rootk8s-master ~]# cat pod-1.yamlapiVersion: v1kind: Podmetadata:name: demo-pod-1namespace: defaultlabels:app: myappenv: devspec:nodeSelector:node: worker01containers:- name: nginx-nodenameports:- containerPort: 8080image: tomcat:8.5-jre8-alpineimagePullPolicy: IfNotPresent[rootk8s-master ~]# kubectl apply -f pod-1.yaml#查看pod调度到哪个节点[rootk8s-master ~]# kubectl get pods -o wide二、Pod亲和性生产上为了保证应用的高可用性需要将同一应用的不同pod分散在不同的宿主机上以防宿主机出现宕机等情况导致pod重建影响到业务的连续性。要想实现这样的效果需要用到k8s自带的pod亲和性和反亲和性特性。Pod 的亲和性与反亲和性有两种类型requiredDuringSchedulingIgnoredDuringExecution ##一定满足preferredDuringSchedulingIgnoredDuringExecution ##尽量满足podAffinity(亲和性)pod和pod更倾向腻在一起把相近的pod结合到相近的位置如同一区域同一机架这样的话pod和pod之间更好通信比方说有两个机房这两个机房部署的集群有1000台主机那么我们希望把nginx和tomcat都部署同一个地方的node节点上可以提高通信效率podAntiAffinity(反亲和性)pod和pod更倾向不腻在一起如果部署两套程序那么这两套程序更倾向于反亲和性这样相互之间不会有影响。第一个pod随机选则一个节点做为评判后续的pod能否到达这个pod所在的节点上的运行方式这就称为pod亲和性我们怎么判定哪些节点是相同位置的哪些节点是不同位置的我们在定义pod亲和性时需要有一个前提哪些pod在同一个位置哪些pod不在同一个位置这个位置是怎么定义的标准是什么以节点名称为标准这个节点名称相同的表示是同一个位置节点名称不相同的表示不是一个位置。1、 常用字段解析[rootk8s-master ~]# kubectl explain pods.spec.affinity.podAffinityFIELDS:preferredDuringSchedulingIgnoredDuringExecution []ObjectrequiredDuringSchedulingIgnoredDuringExecution []Object#硬亲和性requiredDuringSchedulingIgnoredDuringExecution#软亲和性preferredDuringSchedulingIgnoredDuringExecution[rootk8s-master ~]# kubectl explain pods.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecutionFIELDS:labelSelector Objectnamespaces []stringtopologyKey string -required-#位置拓扑的键这个是必须字段#topologyKey#怎么判断是不是同一个位置#使用rack的键是同一个位置#rackrack1#使用row的键是同一个位置#rowrow1#要判断pod跟别的pod亲和跟哪个pod亲和需要靠labelSelector通过labelSelector选则一组能作为亲和对象的pod资源#labelSelector#labelSelector需要选则一组资源那么这组资源是在哪个名称空间中呢通过namespace指定如果不指定namespaces那么就是当前创建pod的名称空间#namespace[rootk8s-master ~]# kubectl explain pods.spec.affinity.podAffinity.requiredDuringSchedulingIgnoredDuringExecution.labelSelectorFIELDS:matchExpressions []ObjectmatchLabels map[string]string#匹配表达式#matchExpressions []Object2、 案例演示2.1 pod节点亲和性[rootk8s-master ~]# cat pod-required-affinity-demo.yamlapiVersion: v1kind: Podmetadata:name: pod-firstlabels:app2: myapp2tier: frontendspec:containers:- name: myappimage: nginximagePullPolicy: IfNotPresent---apiVersion: v1kind: Podmetadata:name: pod-secondlabels:app: backendtier: dbspec:containers:- name: busyboximage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [sh,-c,sleep 3600]affinity:podAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- {key: app2, operator: In, values: [myapp2]}topologyKey: kubernetes.io/hostname上面表示创建的pod必须与拥有appmyapp2标签的pod在一个节点上[rootk8s-master ~]# kubectl apply -f pod-required-affinity-demo.yaml[rootk8s-master ~]# kubectl get pods -o wide2.2 pod节点反亲和性[roothd1 node]# kubectl delete -f pod-required-affinity-demo.yaml[rootk8s-master ~]# cat pod-required-anti-affinity-demo.yamlapiVersion: v1kind: Podmetadata:name: pod1-firstlabels:app1: myapp1tier: frontendspec:containers:- name: myappimage: nginximagePullPolicy: IfNotPresent---apiVersion: v1kind: Podmetadata:name: pod2-secondlabels:app: backendtier: dbspec:containers:- name: busyboximage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [sh,-c,sleep 3600]affinity:podAntiAffinity:preferredDuringSchedulingIgnoredDuringExecution:- weight: 100podAffinityTerm:labelSelector:matchExpressions:- key: app1operator: Invalues:- myapp1topologyKey: kubernetes.io/hostname[rootk8s-master ~]# kubectl apply -f pod-required-anti-affinity-demo.yaml[rootk8s-master ~]# kubectl get pods -o wide2.3 换一个topologykey[rootk8s-master ~]# kubectl label nodes k8s-node1 zonefoo[rootk8s-master ~]# kubectl label node k8s-node2 zonefoo --overwrite[rootk8s-master ~]# cat pod-first-required-anti-affinity-demo-1.yamlapiVersion: v1kind: Podmetadata:name: pod3-firstlabels:app3: myapp3tier: frontendspec:containers:- name: myappimage: ikubernetes/myapp:v1imagePullPolicy: IfNotPresent[rootk8s-master ~]# cat pod-second-required-anti-affinity-demo-2.yamlapiVersion: v1kind: Podmetadata:name: pod3-secondlabels:app: backendtier: dbspec:containers:- name: busyboximage: busybox:1.28imagePullPolicy: IfNotPresentcommand: [sh,-c,sleep 3600]affinity:podAntiAffinity:requiredDuringSchedulingIgnoredDuringExecution:- labelSelector:matchExpressions:- {key: app3 ,operator: In, values: [myapp3]}topologyKey: zone[rootk8s-master ~]# kubectl apply -f pod-first-required-anti-affinity-demo-1.yaml[rootk8s-master ~]# kubectl apply -f pod-second-required-anti-affinity-demo-2.yaml[rootk8s-master ~]# kubectl get pods -o wide#发现第二个节点是pending因为两个节点是同一个位置现在不是同一个位置的了而且我们要求反亲和性所以就会处于pending状态如果在反亲和性这个位置把required改成preferred那么也会运行。#podaffinitypod节点亲和性pod倾向于哪个pod#nodeaffinitynode节点亲和性pod倾向于哪个node常见topologyKeytopologyKey拓扑域范围主要用途kubernetes.io/hostname节点Node最常用。实现 Pod 在节点级别的分散或集中。topology.kubernetes.io/zone可用区Zone实现跨可用区的高可用容灾能力更强。topology.kubernetes.io/region区域Region实现跨地域的部署通常用于多地域容灾或全球化应用。node.kubernetes.io/instance-type实例类型根据机器硬件类型来调度 Pod较少使用。三、资源限制resources四、污点与容忍前面介绍了节点亲和性调度它可以使得我们的Pod调度到指定的Node节点上而污点Taints与之相反它可以让Node拒绝Pod的运行甚至驱逐已经在该Node上运行的Pod污点是Node上设置的一个属性通常设置污点表示该节点有问题比如磁盘要满了资源不足或者该Node正在升级暂时不能提供使用等情况这时不希望再有新的Pod进来这个时候就可以给该节点设置一个污点。但是有的时候其实Node节点并没有故障只是不想让一些Pod调度进来比如这台节点磁盘空间比较大希望是像Elasticsearch、Minio这样需要较大磁盘空间的Pod才调度进来那么就可以给节点设置一个污点给Pod设置容忍Tolerations对应污点如果再配合节点亲和性功能还可以达到独占节点的效果一般时候 Taints 总是与 Tolerations配合使用1、污点Taints设置污点后一般Pod将不会调度到该节点上来。每次Pod都不会调度到master节点那是因为搭建K8s集群的时候K8s给master自带了一个污点。1.1、查看污点查看master上是否有污点通过describe命令可以看到节点上的所有污点[rootk8s-master ~]# kubectl describe node k8s-master...Taints: node-role.kubernetes.io/control-plane:NoSchedule...还可以通过如下命令查看[rootk8s-master ~]# kubectl get nodes k8s-master -o go-template{{.spec.taints}}[map[effect:NoSchedule key:node-role.kubernetes.io/control-plane]]发现master上自带了一个没有value的污点 node-role.kubernetes.io/control-plane effect 为 NoSchedule由于我们的Pod都没有容忍这个污点所以一直都不会调度到master1.2、污点类别上面我们看到了污点有一个effect 属性为NoSchedule其实还有其它两种类别分别是 PreferNoSchedule与 NoExecuteNoSchedule如果没有容忍该污点就不能调度进来。PreferNoSchedule相当于NoExecute的一个软限制如果没有容忍该污点尽量不要把Pod调度进来但也不是强制的。NoExecute如果没有设置容忍该污点新的Pod肯定不会调度进来, 并且已经在运行的Pod没有容忍该污点也会被驱逐。1.3、设置污点污点分别由key、value可以为空、effect 组成设置命令如下# 设置污点并不允许Pod调度到该节点$ kubectl taint node k8s-node1 keyvalue:NoSchedule# 设置污点尽量不要让Pod调度到该节点$ kubectl taint node k8s-node1 keyvalue:PreferNoSchedule# 设置污点不允许Pod调度到该节点并且且将该节点上没有容忍该污点的Pod将进行驱逐$ kubectl taint node k8s-node1 keyvalue:NoExecute1.4、删除污点# 删除该key的所有污点$ kubectl taint node k8s-node1 key-# 删除该key的某一个污点$ kubectl taint node k8s-node1 keyvalue:NoSchedule-# 删除该key的某一个污点可以不写value$ kubectl taint node k8s-node1 key:NoSchedule-1.5、污点测试给k8s-node1节点设置一个污点表示只有前台web应用才能调度后端app应用不能调度[rootk8s-master ~]# kubectl taint node k8s-node1 webtrue:NoSchedulenode/k8s-node1 tainted编写 web-taint.yaml 内容如下有三个Pod均没有容忍该污点apiVersion: v1kind: Podmetadata:name: web-taint1spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent # 本地有不拉取镜像---apiVersion: v1kind: Podmetadata:name: web-taint2spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent # 本地有不拉取镜像---apiVersion: v1kind: Podmetadata:name: web-taint3spec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent # 本地有不拉取镜像启动Pod观察Pod是否都被调度到k8s-node2节点# 启动三个Pod[rootk8s-master taint]# kubectl apply -f web-taint.yamlpod/web-taint1 applydpod/web-taint2 applydpod/web-taint3 applyd# 查看pod详情发现均被调度到k8s-node2节点[rootk8s-master taint]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESweb-taint1 1/1 Running 0 13s 10.244.2.35 k8s-node2 none noneweb-taint2 1/1 Running 0 13s 10.244.2.34 k8s-node2 none noneweb-taint3 1/1 Running 0 13s 10.244.2.36 k8s-node2 none none给k8s-node2节点添加污点 apptrue:NoExecute表示只有后端服务才能调度进来并且已经在k8s-node2节点上运行的不是后端服务的节点将被驱逐# 设置污点[rootk8s-master taint]# kubectl taint node k8s-node2 apptrue:NoExecutenode/k8s-node2 tainted# 查看Pod详情发现三个Pod已经被驱逐[rootk8s-master taint]# kubectl get pod -o wideNo resources found in default namespace.从上面可以知道我们虽然设置了污点但是我们的节点其实很正常既然是正常节点那么就可以有服务运行这就需要用到容忍机制来运行这些Pod2、容忍Toletations如果需要Pod忽略Node上的污点就需要给Pod设置容忍并且是需要容忍该Pod上的所有污点。通过 kubectl explain pod.spec.tolerations 可以查看容忍的配置项2.1、配置项tolerations: # 数组类型可以设置多个容忍- key: # 污点keyoperator: # 操作符有两个选项 Exists and Equal 默认是Equalvalue: # 污点value如果使用Equal需要设置如果是Exists就不需要设置effect: # 可以设置为NoSchedule、PreferNoSchedule、NoExecute如果为空表示匹配该key下所有污点tolerationSeconds: # 如果污点类型为NoExecute还可以设置一个时间表示这一个时间段内Pod不会被驱逐过了这个时间段会立刻驱逐0或者负数会被立刻驱逐2.2、设置容忍给Pod设置容忍k8s-node1节点的污点webtrue:NoSchedule编写 web-tolerations.yaml 内容如下容忍污点webtrue:NoScheduleapiVersion: v1kind: Podmetadata:name: web-tolerationsspec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresent # 本地有不拉取镜像tolerations:- key: weboperator: Equalvalue: trueeffect: NoSchedule启动web-tolerations观察Pod是否正常运行# 启动web-tolerations[rootk8s-master taint]# kubectl apply -f web-tolerations.yamlpod/web-tolerations applyd​# Pod正常运行且运行在k8s-node1节点[rootk8s-master taint]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESweb-tolerations 1/1 Running 0 8s 10.244.1.92 k8s-node1 none none查看该Pod上的容忍[rootk8s-master taint]# kubectl describe pod web-tolerationsTolerations: node.kubernetes.io/not-ready:NoExecute opExists for 300snode.kubernetes.io/unreachable:NoExecute opExists for 300swebtrue:NoSchedule可以看到我们设置的Tolerations在里边除了我们自己的K8s还会给每个Pod设置两个默认Tolerations并且Tolerations时间为五分钟表示某些节点发生一些临时性问题Pod能够继续在该节点上运行五分钟等待节点恢复并不是立刻被驱逐从而避免系统的异常波动。编写 app-tolerations.yaml 内容如下容忍污点apptrue:NoExecute并且只容忍60sapiVersion: v1kind: Podmetadata:name: app-tolerationsspec:containers:- name: nginximage: nginximagePullPolicy: IfNotPresenttolerations:- key: appoperator: Existseffect: NoExecutetolerationSeconds: 60启动app-tolerations查看Pod是否能够正常运行且运行在k8s-node2节点等待60秒查看Pod是否已被驱逐# 启动app-tolerations[rootk8s-master taint]# kubectl apply -f app-tolerations.yamlpod/app-tolerations applyd# 查看详情已经运行成功并且调度到了k8s-node2节点此时运行59秒[rootk8s-master taint]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESapp-tolerations 1/1 Running 0 59s 10.244.2.37 k8s-node2 none none# 运行60秒查看状态已经变为Terminating[rootk8s-master taint]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESapp-tolerations 1/1 Terminating 0 60s 10.244.2.37 k8s-node2 none none# 立刻再次查看已经被驱逐[rootk8s-master taint]# kubectl get pod -o wideNo resources found in default namespace.如果一个节点没有任何污点另一个节点有污点并且Pod容忍了该污点那么最终会调度到哪个节点呢删除k8s-node2节点的污点apptrue:NoExecute保留k8s-node1节点的webtrue:NoSchedule再次启动之前的web-tolerations.yaml 观察Pod所在节点# 删除k8s-node2上的污点[rootk8s-master taint]# kubectl taint node k8s-node2 app:NoExecute-node/k8s-node2 untainted​# 启动Pod web-tolerations[rootk8s-master taint]# kubectl apply -f web-tolerations.yamlpod/web-tolerations applyd​# Pod正常运行并且运行在k8s-node2节点[rootk8s-master taint]# kubectl get pod -o wideNAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATESweb-tolerations 1/1 Running 0 2s 10.244.2.38 k8s-node2 none none上面表明即使是容忍了该污点如果有其它节点不需要容忍就可以调度的话那还是会优先选择没有污点的机器但是生产上往往设置污点就是为了给你这个Pod使用的不能调度到其它节点这个时候需要配合节点亲和性调度一起使用。2.3、Equal 与 ExistsExists 表示key是否存在所以无需设置valueEqual 则必须设置value需要完全匹配默认为Equal空的key配合Exists 可以匹配所有的key-value也就是容忍所有的污点生产上非常不建议使用
版权声明:本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!

东莞网络问政平台wordpress安装说明seo工具好用

如何为 EmotiVoice 贡献代码或语音数据?社区参与指南 在虚拟助手越来越“懂人心”、游戏角色开始“动真情”的今天,语音合成早已不再是简单的文字朗读。用户期待的是有温度的声音——能愤怒、会撒娇、带笑意的语音交互体验。而要实现这一点,光…

张小明 2025/12/26 3:22:50 网站建设

网站开发的难点湖南张家界

Docker容器在优化操作系统发行版上的部署与管理 1. 远程连接CoreOS实例中的Docker服务 要远程连接到已启动的CoreOS实例中运行的Docker服务,可按以下步骤操作: 1. 复制配置文件: $ cp config.rb.sample config.rb $ cp user-data.sample user-data编辑 config.rb 文件…

张小明 2025/12/27 2:37:00 网站建设

网站建设模板个人昆明企业网站设计公司

如果你还觉得人形机器人是只能看不能玩的 “科技展品”,那宇树科技刚上线的人形机器人 App Store,绝对能颠覆你的认知。12 月 13 日,这款堪称机器人界 “应用市场” 的平台正式发布,把原本需要专业团队协作数周的复杂动作开发&…

张小明 2025/12/25 13:43:14 网站建设

柳州做网站优化网站建设与管理适合男的还是女的

Kotaemon定时任务调度:CeleryRedis实现周期性更新 在构建现代智能问答系统时,一个常被忽视但至关重要的问题浮出水面:知识库的“保鲜度”如何保障? 设想这样一个场景:某企业客服机器人基于最新的产品手册回答用户问题。…

张小明 2025/12/27 1:19:18 网站建设

深圳建科院公司网站中国建设银行招聘官网

课题摘要在高校科技竞赛规范化、数字化管理需求升级的背景下,传统竞赛管理存在 “报名流程繁琐、评审效率低、数据统计滞后” 的痛点,基于 SpringBoot 构建的大学生科技竞赛管理系统,适配高校教务处、竞赛组委会、参赛师生等多角色&#xff0…

张小明 2025/12/26 3:08:42 网站建设

pinterest网站怎么进wordpress 订单号位数

简介 背景与重要性 在嵌入式实时系统中,电源管理和低功耗优化是至关重要的任务。随着物联网(IoT)和移动设备的广泛应用,设备的续航能力和能源效率成为关键因素。实时系统不仅要保证任务的及时响应和执行,还需要在有限…

张小明 2025/12/26 14:54:53 网站建设