一区二区三区三上|欧美在线视频五区|国产午夜无码在线观看视频|亚洲国产裸体网站|无码成年人影视|亚洲AV亚洲AV|成人开心激情五月|欧美性爱内射视频|超碰人人干人人上|一区二区无码三区亚洲人区久久精品

0
  • 聊天消息
  • 系統(tǒng)消息
  • 評論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

詳解Kubernetes中的Pod調(diào)度親和性

馬哥Linux運(yùn)維 ? 來源:博客園 ? 2025-06-07 13:56 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

概述

在 Kubernetes(K8s)中,Pod 調(diào)度親和性(Affinity)是一種高級調(diào)度策略,用于控制 Pod 與節(jié)點(Node)或其他 Pod 之間的關(guān)聯(lián)(親和)或反關(guān)聯(lián)(反親和)關(guān)系。通過親和性規(guī)則,管理員可以更精細(xì)地控制 Pod 的調(diào)度行為,滿足業(yè)務(wù)的拓?fù)浼s束、資源局部性、高可用等需求。

親和性主要有兩類

? 節(jié)點親和性

? Pod親和性

回到頂部

節(jié)點親和性

節(jié)點親和性是 Kubernetes 中控制 Pod 調(diào)度到特定節(jié)點的核心機(jī)制,它比傳統(tǒng)的 nodeSelector 更具靈活性,支持更復(fù)雜的匹配規(guī)則和優(yōu)先級策略。

節(jié)點親和性通過nodeAffinity字段定義,包含requiredDuringSchedulingIgnoredDuringExecution(硬性)和preferredDuringSchedulingIgnoredDuringExecution(軟性)兩種規(guī)則。

節(jié)點親和性的作用

精準(zhǔn)匹配節(jié)點標(biāo)簽

節(jié)點親和性通過定義 標(biāo)簽匹配規(guī)則(如節(jié)點必須包含 / 不包含某個標(biāo)簽、標(biāo)簽值在指定范圍內(nèi)等),將 Pod 調(diào)度到符合條件的節(jié)點。

? 硬性規(guī)則(requiredDuringScheduling):強(qiáng)制 Pod 只能調(diào)度到滿足條件的節(jié)點,否則保持 Pending 狀態(tài)。
例:將數(shù)據(jù)庫 Pod 強(qiáng)制調(diào)度到標(biāo)記為 role=database 且 storage=ssd 的節(jié)點。

? 軟性規(guī)則(preferredDuringScheduling):優(yōu)先調(diào)度到滿足條件的節(jié)點,若不滿足則嘗試其他節(jié)點(通過權(quán)重配置優(yōu)先級)。
例:優(yōu)先將 Web 服務(wù) Pod 調(diào)度到 region=east 的節(jié)點(權(quán)重 100),其次調(diào)度到 zone=az1 的節(jié)點(權(quán)重 70)。

精細(xì)化控制

替代簡單的 nodeSelector,支持復(fù)雜邏輯(如 “節(jié)點必須包含 A 標(biāo)簽且不包含 B 標(biāo)簽”)。

靈活容錯

軟性規(guī)則允許調(diào)度器在條件不滿足時 “退而求其次”,避免 Pod 長時間處于 Pending。

資源利用率優(yōu)化

通過標(biāo)簽分層(如環(huán)境、硬件、地域),實現(xiàn)集群資源的合理分配與負(fù)載均衡。

節(jié)點親和性實戰(zhàn)-硬性規(guī)則匹配

必須滿足條件才能調(diào)度,否則 Pod 將處于 Pending 狀態(tài)。調(diào)度成功后,即使節(jié)點標(biāo)簽變更導(dǎo)致規(guī)則不再滿足,Pod 也不會被驅(qū)逐。

將 Pod 調(diào)度到同時滿足以下條件的節(jié)點:

? 標(biāo)簽 env=prod

? 標(biāo)簽 disk-type=ssd

? 標(biāo)簽 cpu-cores > 2

示例:
給node01節(jié)點打上標(biāo)簽

|   |   |
| --- | --- |
|   | [root@master ~]# kubectl label node node01env=prod disk-type=ssd cpu-cores=3 |
|   | node/node01 labeled |
|   |   |
|   |# 查看標(biāo)簽 |
|   | [root@master ~]# kubectl describe node node01 | grep Labels -A 5 |
|   | Labels:       beta.kubernetes.io/arch=amd64 |
|   | beta.kubernetes.io/os=linux |
|   | cpu-cores=3 |
|   | disk-type=ssd |
|   |env=prod |
|   | kubernetes.io/arch=amd64 |

創(chuàng)建Pod

|  |  |
|---|---|
|  |[root@master~/affinity]# cat affinity-deploy.yaml |
|  |apiVersion:apps/v1|
|  |kind:Deployment|
|  |metadata:|
|  |name:nginx-affinity|
|  |spec:|
|  |replicas:5|
|  |selector:|
|  |matchLabels:|
|  |app:nginx|
|  |template:|
|  |metadata:|
|  |labels:|
|  |app:nginx|
|  |spec:|
|  |affinity:|
|  |# 節(jié)點親和性 |
|  |nodeAffinity:|
|  |# 指定硬性規(guī)則 |
|  |requiredDuringSchedulingIgnoredDuringExecution:|
|  |# 匹配規(guī)則 |
|  |nodeSelectorTerms:|
|  |-matchExpressions:|
|  |-key:env|
|  |operator:In|
|  |values:["prod"]|
|  |-key:disk-type|
|  |operator:In|
|  |values:["ssd"]|
|  |-key:cpu-cores|
|  |operator:Gt|
|  |values:["2"] # 注意:values 是字符串列表,內(nèi)部會轉(zhuǎn)為數(shù)字比較 |
|  |containers:|
|  |-name:nginx|
|  |image:nginx|
|  |#創(chuàng)建 |
|  |[root@master~/affinity]# kubectl apply -f affinity-deploy.yaml |
|  |deployment.apps/nginx-affinitycreated|

查看Pod調(diào)度到哪個節(jié)點上了?
發(fā)現(xiàn)Pod全部調(diào)度到node01節(jié)點上

|  |  |
|--- | --- |
|  |[root@master~/affinity]# kubectlgetpo-o wide|
|  |NAME               READY  STATUS  RESTARTS  AGE  IP        NODE   NOMINATED NODE  READINESS GATES|
|  |nginx-affinity-556d5d5987-5bnjm 1/1  Running 0    94s 100.117.144.175 node01      |
|  |nginx-affinity-556d5d5987-bvmvh 1/1  Running 0    94s 100.117.144.173 node01      |
|  |nginx-affinity-556d5d5987-d7tkg 1/1  Running 0    94s 100.117.144.174 node01      |
|  |nginx-affinity-556d5d5987-frkkm 1/1  Running 0    94s 100.117.144.172 node01      |
|  |nginx-affinity-556d5d5987-ttlcr 1/1  Running 0    94s 100.117.144.176 node01      |

如果標(biāo)簽不匹配,Pod會出現(xiàn)什么情況呢?

|   |   |
| --- | --- |
|   |# 將node01節(jié)點上的標(biāo)簽刪除一個 |
|   | [root@master ~/affinity]# kubectl label node node01 cpu-cores- |
|   | node/node01 unlabeled |
|   |# 查看標(biāo)簽 |
|   | [root@master ~/affinity]# kubectl describe node node01 | grep Labels -A 5 |
|   | Labels:       beta.kubernetes.io/arch=amd64 |
|   | beta.kubernetes.io/os=linux |
|   | disk-type=ssd |
|   |env=prod |
|   | kubernetes.io/arch=amd64 |
|   | kubernetes.io/hostname=node01 |
|   |   |
|   |# 刪除Pod讓其重建 |
|   | [root@master ~/affinity]# kubectl get po | awk'{print $1}'| xargs kubectl delete po |
|   | pod"nginx-affinity-556d5d5987-5bnjm"deleted |
|   | pod"nginx-affinity-556d5d5987-bvmvh"deleted |
|   | pod"nginx-affinity-556d5d5987-d7tkg"deleted |
|   | pod"nginx-affinity-556d5d5987-frkkm"deleted |
|   | pod"nginx-affinity-556d5d5987-ttlcr"deleted |

查看Pod,發(fā)現(xiàn)狀態(tài)都是Pending狀態(tài)

|   |   |
| --- | --- |
|   | [root@master ~/affinity]# kubectl get po |
|   | NAME               READY  STATUS  RESTARTS  AGE |
|   | nginx-affinity-556d5d5987-44qmc  0/1   Pending  0     27s |
|   | nginx-affinity-556d5d5987-4qtth  0/1   Pending  0     27s |
|   | nginx-affinity-556d5d5987-4tws5  0/1   Pending  0     27s |
|   | nginx-affinity-556d5d5987-bgm7n  0/1   Pending  0     27s |
|   | nginx-affinity-556d5d5987-kh555  0/1   Pending  0     27s |

查看一下詳細(xì)信息,發(fā)現(xiàn)是標(biāo)簽不匹配

|   |   |
| --- | --- |
|   |   |
|   | [root@master ~/affinity]# kubectl describe po nginx-affinity-556d5d5987-44qmc |
|   | Name:       nginx-affinity-556d5d5987-44qmc |
|   |   |
|   | Events: |
|   | Type   Reason      Age From       Message |
|   | ----   ------      ---- ----        ------- |
|   | Warning FailedScheduling 71s  default-scheduler 0/3nodes are available:1node(s) had untolerated taint {node-role.kubernetes.io/control-plane: },2node(s) didn'tmatchPod'snode affinity/selector. preemption:0/3nodes are available:3Preemption is not helpfulforscheduling.. |
|   | Warning FailedScheduling 70s  default-scheduler 0/3nodes are available:1node(s) had untolerated taint {node-role.kubernetes.io/control-plane: },2node(s) didn'tmatchPod'snode affinity/selector. preemption:0/3nodes are available:3Preemption is not helpfulforscheduling.. |

總結(jié)一下,節(jié)點親和性可以更加細(xì)膩指定Pod調(diào)度到某一個節(jié)點上,如果指定的標(biāo)簽不匹配,那么Pod會處于Pending狀態(tài)

節(jié)點親和性實戰(zhàn)-軟性規(guī)則匹配

軟性規(guī)則匹配優(yōu)先滿足條件,但不強(qiáng)制。調(diào)度器會為每個滿足條件的節(jié)點打分,選擇分?jǐn)?shù)最高的節(jié)點。

評分機(jī)制

當(dāng)存在多個滿足軟性規(guī)則的節(jié)點時,調(diào)度器會計算每個節(jié)點的得分:

? 基礎(chǔ)分:所有節(jié)點初始分為 0。

? 權(quán)重疊加:對每個 preferredDuringSchedulingIgnoredDuringExecution 規(guī)則:

? 若節(jié)點滿足規(guī)則,得分為 weight 值。

? 若不滿足,得分為 0。

? 總分計算:節(jié)點最終得分是所有匹配規(guī)則的 weight 之和。

示例:
優(yōu)先調(diào)度到以下節(jié)點:

? 首選 region=east 的節(jié)點(權(quán)重 100)

? 其次 disk-type=ssd 的節(jié)點(權(quán)重 70)

給node01節(jié)點打上region=east標(biāo)簽

|   |   |
| --- | --- |
|   | [root@master ~/affinity]# kubectl label node node01 region=east |
|   | node/node01 labeled |

給node02節(jié)點打上disk-type=ssd標(biāo)簽

|   |   |
| --- | --- |
|   | [root@master ~/affinity]# kubectl label node node02 disk-type=ssd |
|   | node/node02 labeled |

創(chuàng)建deploy

|  |  |
|---|---|
|  |[root@master~/affinity]# cat affinity-deploy.yaml |
|  |apiVersion:apps/v1|
|  |kind:Deployment|
|  |metadata:|
|  |name:nginx-affinity|
|  |spec:|
|  |replicas:10|
|  |selector:|
|  |matchLabels:|
|  |app:nginx|
|  |template:|
|  |metadata:|
|  |labels:|
|  |app:nginx|
|  |spec:|
|  |affinity:|
|  |# 節(jié)點親和性 |
|  |nodeAffinity:|
|  |# 指定軟性匹配規(guī)則 |
|  |preferredDuringSchedulingIgnoredDuringExecution:|
|  |# 權(quán)重范圍 1-100,值越高優(yōu)先級越高 |
|  |-weight:100|
|  |preference:|
|  |matchExpressions:|
|  |-key:region|
|  |operator:In|
|  |values:["east"]|
|  |-weight:70|
|  |preference:|
|  |matchExpressions:|
|  |-key:disk-type|
|  |operator:In|
|  |values:["ssd"]|
|  |containers:|
|  |-name:nginx|
|  |image:nginx|
|  |[root@master~/affinity]# kubectl apply -f affinity-deploy.yaml |
|  |deployment.apps/nginx-affinitycreated|

查看Pod調(diào)度到哪一個節(jié)點上

發(fā)現(xiàn)調(diào)度到node01節(jié)點上的Pod居多,因為node01的權(quán)重是100,而node02節(jié)點上略少,權(quán)重為70

|   |   |
| --- | --- |
|   |[root@master ~/affinity]# kubectl get po -o wide |
|   | NAME               READY  STATUS  RESTARTS  AGE  IP        NODE   NOMINATED NODE  READINESS GATES |
|   | nginx-affinity-65587946bd-84mv5 1/1  Running 0    30s 100.117.144.180 node01         |
|   | nginx-affinity-65587946bd-8lfwl 1/1  Running 0    30s 100.117.144.183 node01         |
|   | nginx-affinity-65587946bd-9fnhb 1/1  Running 0    30s 100.117.144.179 node01         |
|   | nginx-affinity-65587946bd-9rqt9 1/1  Running 0    30s 100.117.144.177 node01         |
|   | nginx-affinity-65587946bd-gsq4c 1/1  Running 0    30s 100.117.144.182 node01         |
|   | nginx-affinity-65587946bd-pf845 1/1  Running 0    30s 100.95.185.238  node02         |
|   | nginx-affinity-65587946bd-pvwps 1/1  Running 0    30s 100.95.185.237  node02         |
|   | nginx-affinity-65587946bd-qhhh7 1/1  Running 0    30s 100.95.185.239  node02         |
|   | nginx-affinity-65587946bd-tn54h 1/1  Running 0    30s 100.117.144.178 node01         |
|   | nginx-affinity-65587946bd-x64qs 1/1  Running 0    30s 100.117.144.181 node01         |

節(jié)點親和性-混合使用硬性和軟性規(guī)則

示例:

|  |  |
|---|---|
|  |apiVersion:v1|
|  |kind:Pod|
|  |metadata:|
|  |name:mixed-affinity-pod|
|  |spec:|
|  |affinity:|
|  |nodeAffinity:|
|  |# 硬性限制 |
|  |requiredDuringSchedulingIgnoredDuringExecution:|
|  |nodeSelectorTerms:|
|  |-matchExpressions:|
|  |-key:env|
|  |operator:In|
|  |values:["prod"]|
|  |# 軟性限制 |
|  |preferredDuringSchedulingIgnoredDuringExecution:|
|  |-weight:80|
|  |preference:|
|  |matchExpressions:|
|  |-key:gpu|
|  |operator:Exists|
|  |containers:|
|  |-name:nginx|
|  |image:nginx|

回到頂部

Pod親和性

Pod 親和性(Pod Affinity)是 Kubernetes 中控制 Pod 調(diào)度的重要機(jī)制,其核心作用是根據(jù)其他 Pod 的位置(如節(jié)點、命名空間等)來影響當(dāng)前 Pod 的調(diào)度決策,實現(xiàn) Pod 之間的協(xié)同部署或反親和(互斥部署)。這一機(jī)制通過標(biāo)簽匹配規(guī)則,將相關(guān) Pod 「吸引」到同一區(qū)域(如節(jié)點、機(jī)架、可用區(qū)等)或「排斥」到不同區(qū)域,從而優(yōu)化資源利用、提升服務(wù)性能或增強(qiáng)系統(tǒng)穩(wěn)定性。

Pod親和性的分類

Pod親和性分為間親和性和反親和性。

親和性是當(dāng)?shù)谝粋€Pod調(diào)度到一個特定的拓?fù)溆蛑袝r,后續(xù)的所有的Pod都會往該拓?fù)溆蛘{(diào)度。

拓?fù)溆蚶斫鉃橛H和性規(guī)則作用的「區(qū)域范圍」,通常為節(jié)點標(biāo)簽(如 kubernetes.io/hostname 表示節(jié)點,kubernetes.io/zone 表示可用區(qū))。

反親和性是保證一個拓?fù)溆蛑凶疃嘀荒苡星覂H有一個相同的pod,多余的pod處于pending狀態(tài)

Pod間親和性實戰(zhàn)

Pod 間親和性可以用于將相關(guān) Pod 調(diào)度到同一拓?fù)鋵蛹墸ㄈ缤还?jié)點或同一可用區(qū)),從而減少網(wǎng)絡(luò)延遲,提高性能。例如:

? 將前端和后端服務(wù)部署在同一節(jié)點或同一可用區(qū):減少服務(wù)間通信的網(wǎng)絡(luò)延遲。

? 將依賴的服務(wù)部署在同一節(jié)點:提高服務(wù)間的通信效率。

Pod 間親和性也分為硬性限制和軟性限制,通過requiredDuringSchedulingIgnoredDuringExecution(硬性)和preferredDuringSchedulingIgnoredDuringExecution(軟性)來指定。

硬性限制實戰(zhàn)

示例:

|  |  |
|---|---|
|  |# 定義deploy |
|  |[root@master~/affinity]# cat affinity-deploy.yaml |
|  |apiVersion:apps/v1|
|  |kind:Deployment|
|  |metadata:|
|  |name:nginx-affinity|
|  |spec:|
|  |replicas:10|
|  |selector:|
|  |matchLabels:|
|  |app:nginx|
|  |template:|
|  |metadata:|
|  |labels:|
|  |app:nginx|
|  |spec:|
|  |affinity:|
|  |# Pod親和性 |
|  |podAffinity:|
|  |# 指定硬性匹配規(guī)則 |
|  |requiredDuringSchedulingIgnoredDuringExecution:|
|  |-labelSelector:|
|  |# 這里指定Pod的標(biāo)簽,而不是節(jié)點的標(biāo)簽 |
|  |matchExpressions:|
|  |-key:app|
|  |operator:In|
|  |values:["nginx"]|
|  |# 添加 topologyKey,topologyKey 決定了 Pod 親和性或反親和性規(guī)則在集群中的作用范圍。 |
|  |# 這里指定節(jié)點標(biāo)簽的key |
|  |topologyKey:"kubernetes.io/hostname"|
|  |containers:|
|  |-name:nginx|
|  |image:nginx|
|  |  |
|  |[root@master~/affinity]# kubectl apply -f affinity-deploy.yaml |
|  |deployment.apps/nginx-affinitycreated|

配置說明:
labelSelector:標(biāo)簽選擇器,在這里是選擇Pod的標(biāo)簽,而不是選擇節(jié)點的標(biāo)簽,因為Pod親和性是Pod級別的調(diào)度
topologyKey:該字段是Pod親和性中一個很重要的字段,它的作用是定義 Pod 親和性或反親和性規(guī)則的作用范圍,即在什么級別的拓?fù)浣Y(jié)構(gòu)中應(yīng)用這些規(guī)則。這里指定的節(jié)點標(biāo)簽的key

查看Pod的調(diào)度,發(fā)現(xiàn)Pod都在node02節(jié)點上

|   |   |
| --- | --- |
|   |[root@master ~/affinity]# kubectl get po -o wide |
|   | NAME               READY  STATUS  RESTARTS  AGE  IP        NODE   NOMINATED NODE  READINESS GATES |
|   | nginx-affinity-7f74fbb7c-2r9lm 1/1  Running 0    76s 100.95.185.249 node02         |
|   | nginx-affinity-7f74fbb7c-55bfw 1/1  Running 0    76s 100.95.185.241 node02         |
|   | nginx-affinity-7f74fbb7c-9h5qq 1/1  Running 0    76s 100.95.185.248 node02         |
|   | nginx-affinity-7f74fbb7c-bq9m9 1/1  Running 0    76s 100.95.185.245 node02         |
|   | nginx-affinity-7f74fbb7c-cdxpg 1/1  Running 0    76s 100.95.185.240 node02         |
|   | nginx-affinity-7f74fbb7c-j7vbf 1/1  Running 0    76s 100.95.185.242 node02         |
|   | nginx-affinity-7f74fbb7c-rnqfs 1/1  Running 0    76s 100.95.185.243 node02         |
|   | nginx-affinity-7f74fbb7c-sscsx 1/1  Running 0    76s 100.95.185.244 node02         |
|   | nginx-affinity-7f74fbb7c-v7jf2 1/1  Running 0    76s 100.95.185.246 node02         |
|   | nginx-affinity-7f74fbb7c-w249m 1/1  Running 0    76s 100.95.185.247 node02         |

軟性限制實戰(zhàn)(略,生產(chǎn)環(huán)境中使用的不多)

Pod反親和性

Pod 反親和性(podAntiAffinity)是 Kubernetes 中的一種調(diào)度策略,與 Pod 親和性(podAffinity)相對。它用于控制 Pod 的調(diào)度位置,確保滿足特定條件的 Pod 不會被調(diào)度到同一拓?fù)鋵蛹墸ㄈ缤还?jié)點、同一可用區(qū)或同一區(qū)域)上。Pod 反親和性主要用于實現(xiàn)高可用性和資源隔離等目標(biāo)。

Pod 反親和性也分為硬性限制和軟性限制,通過requiredDuringSchedulingIgnoredDuringExecution(硬性)和preferredDuringSchedulingIgnoredDuringExecution(軟性)來指定。

Pod反親和性作用

? 高可用性:

? 通過將多個副本 Pod 分布到不同的故障域(如不同的節(jié)點或可用區(qū)),確保系統(tǒng)的容錯能力。例如,將多個副本 Pod 調(diào)度到不同的節(jié)點或可用區(qū),避免單點故障導(dǎo)致所有副本同時不可用。

? 資源隔離:

? 通過將某些 Pod 分布到不同的節(jié)點或可用區(qū),避免它們相互競爭資源。例如,將不同租戶的 Pod 分布到不同的節(jié)點或可用區(qū),實現(xiàn)資源隔離。

? 性能優(yōu)化:

? 通過將 Pod 分布到不同的節(jié)點或可用區(qū),減少單個節(jié)點的負(fù)載壓力,提高整體性能。

硬限制實戰(zhàn)

|  |  |
|---|---|
|  |# 創(chuàng)建deploy |
|  |[root@master~/affinity]# cat affinity-deploy.yaml |
|  |apiVersion:apps/v1|
|  |kind:Deployment|
|  |metadata:|
|  |name:nginx-affinity|
|  |spec:|
|  |replicas:10|
|  |selector:|
|  |matchLabels:|
|  |app:nginx|
|  |template:|
|  |metadata:|
|  |labels:|
|  |app:nginx|
|  |spec:|
|  |affinity:|
|  |# Pod反親和性 |
|  |podAntiAffinity:|
|  |# 指定性匹配規(guī)則 |
|  |requiredDuringSchedulingIgnoredDuringExecution:|
|  |-labelSelector:|
|  |# 這里指定Pod的標(biāo)簽,而不是節(jié)點的標(biāo)簽 |
|  |matchExpressions:|
|  |-key:app|
|  |operator:In|
|  |values:["nginx"]|
|  |# # 添加 topologyKey |
|  |topologyKey:"kubernetes.io/hostname"|
|  |containers:|
|  |-name:nginx|
|  |image:nginx|
|  |[root@master~/affinity]# kubectl apply -f affinity-deploy.yaml |
|  |deployment.apps/nginx-affinitycreated|

查看一下Pod

發(fā)現(xiàn)只有兩個Pod處于Running狀態(tài),為什么呢?
因為反親和性是在每個拓?fù)溆蛑姓{(diào)度一個Pod,當(dāng)Pod的數(shù)量多余拓?fù)溆驎r,那么剩余的Pod則無法完成調(diào)度,所以處于了Pending狀態(tài)

|   |   |
| --- | --- |
|   |[root@master ~/affinity]# kubectl get po -o wide |
|   | NAME               READY  STATUS  RESTARTS  AGE  IP        NODE   NOMINATED NODE  READINESS GATES |
|   | nginx-affinity-675c568f99-5brpf 1/1  Running 0    5s 100.117.144.184 node01         |
|   | nginx-affinity-675c568f99-68z9q 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-7vbqb 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-8tqps 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-96cs2 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-prpg4 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-qsp8b 1/1  Running 0    5s 100.95.185.250  node02         |
|   | nginx-affinity-675c568f99-tf9qv 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-x7k8p 0/1  Pending 0    5s                 |
|   | nginx-affinity-675c568f99-xbfn2 0/1  Pending 0    5s                 |

回到頂部

Pod反親和性和DaemonSet的區(qū)別

Pod反親和性和DaemonSet感覺很類似,在不考慮污點的情況下,會在每一個節(jié)點上都會創(chuàng)建一個Pod,但是也有一些區(qū)別

DaemonSet可以閱讀這篇文章:K8s新手系列之DaemonSet資源

特性 Pod 反親和性 DaemonSet
定義 調(diào)度策略,控制 Pod 的調(diào)度位置 控制器,確保每個節(jié)點上運(yùn)行一個 Pod 的副本
用途 高可用性、資源隔離、性能優(yōu)化 運(yùn)行集群級別的守護(hù)進(jìn)程,如日志收集、監(jiān)控代理
調(diào)度方式 根據(jù)labelSelector和topologyKey調(diào)度 Pod 自動在每個節(jié)點上運(yùn)行一個 Pod 的副本
配置方式 在 Pod 的spec.affinity.podAntiAffinity中配置 使用 DaemonSet 資源對象配置
適用場景 多副本應(yīng)用,需要跨節(jié)點或可用區(qū)分布 集群級別的守護(hù)進(jìn)程,每個節(jié)點都需要運(yùn)行一個副本
調(diào)度器角色 調(diào)度器根據(jù)規(guī)則調(diào)度 Pod DaemonSet 控制器自動管理 Pod 的生命周期
Pod 數(shù)量 根據(jù)副本數(shù)和調(diào)度規(guī)則動態(tài)調(diào)整 每個節(jié)點上運(yùn)行一個 Pod,數(shù)量與節(jié)點數(shù)量一致

鏈接:https://www.cnblogs.com/huangSir-devops/p/18859120

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請聯(lián)系本站處理。 舉報投訴
  • 節(jié)點
    +關(guān)注

    關(guān)注

    0

    文章

    222

    瀏覽量

    24980
  • kubernetes
    +關(guān)注

    關(guān)注

    0

    文章

    245

    瀏覽量

    9070
  • 字段
    +關(guān)注

    關(guān)注

    0

    文章

    15

    瀏覽量

    1734

原文標(biāo)題:5分鐘掌握Kubernetes Pod親和性(Affinity):核心概念與實戰(zhàn)配置指南

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運(yùn)維】歡迎添加關(guān)注!文章轉(zhuǎn)載請注明出處。

收藏 人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評論

    相關(guān)推薦
    熱點推薦

    Kubernetes的Device Plugin設(shè)計解讀

    設(shè)計解讀最近在調(diào)研Kubernetes的GPU調(diào)度和運(yùn)行機(jī)制,發(fā)現(xiàn)傳統(tǒng)的alpha.kubernetes.io/nvidia-gpu即將在1.11版本中下線,和GPU相關(guān)的調(diào)度和部署的
    發(fā)表于 03-12 16:23

    Kubernetes Ingress 高可靠部署最佳實踐

    摘要: 在Kubernetes集群,Ingress作為集群流量接入層,Ingress的高可靠顯得尤為重要,今天我們主要探討如何部署一套高性能高可靠的Ingress接入層。簡介
    發(fā)表于 04-17 14:35

    阿里云容器Kubernetes監(jiān)控(二) - 使用Grafana展現(xiàn)Pod監(jiān)控數(shù)據(jù)

    kubernetes承擔(dān)的責(zé)任遠(yuǎn)不止監(jiān)控數(shù)據(jù)的采集,還包括控制臺的監(jiān)控接口、HPA的POD彈性伸縮等都依賴于Heapster的功能。簡介在kubernetes的監(jiān)控方案
    發(fā)表于 05-10 15:28

    從零開始入門 K8s| 阿里技術(shù)專家詳解 K8s 核心概念

    臺節(jié)點上去。Kubernetes調(diào)度器是執(zhí)行這項能力的組件,它會觀察正在被調(diào)度的這個容器的大小、規(guī)格。比如說它所需要的 CPU以及它所需要的 memory,然后在集群找一臺相對比
    發(fā)表于 09-20 14:52

    從零開始入門 K8s| 詳解 Pod 及容器設(shè)計模式

    一、為什么需要 Pod容器的基本概念我們知道 PodKubernetes 項目里面一個非常重要的概念,也是非常重要的一個原子調(diào)度單位,但是為什么我們會需要這樣一個概念呢?在使用容
    發(fā)表于 09-20 15:12

    Pod資源配置

    Kubernetes進(jìn)階實戰(zhàn)》第四章《管理Pod資源對象》
    發(fā)表于 10-22 14:39

    淺談Kubernetes集群的高可用方案

    Kubernetes作為容器應(yīng)用的管理中心,通過對Pod的數(shù)量進(jìn)行監(jiān)控,并且根據(jù)主機(jī)或容器失效的狀態(tài)將新的Pod調(diào)度到其他Node上,實現(xiàn)了應(yīng)用層的高可用
    發(fā)表于 10-11 10:04 ?1次下載
    淺談<b class='flag-5'>Kubernetes</b>集群的高可用方案

    Kubernetes API詳解

    摘要:Kubernetes是Google開源的容器集群管理系統(tǒng)。它構(gòu)建Ddocker技術(shù)之上,為容器化的應(yīng)用提供資源調(diào)度、部署運(yùn)行、服務(wù)發(fā)現(xiàn)、擴(kuò)容縮容等整一套功能,本文節(jié)選自龔正
    發(fā)表于 10-12 16:19 ?0次下載
    <b class='flag-5'>Kubernetes</b> API<b class='flag-5'>詳解</b>

    深入研究Kubernetes調(diào)度

    “本文從 Pod 和節(jié)點的配置開始,介紹了 Kubernetes Scheduler 框架、擴(kuò)展點、API 以及可能發(fā)生的與資源相關(guān)的瓶頸,并展示了性能調(diào)整設(shè)置,涵蓋了 Kubernetes
    的頭像 發(fā)表于 08-23 10:39 ?1617次閱讀

    容器進(jìn)程調(diào)度時是該優(yōu)先考慮CPU資源還是內(nèi)存資源

    當(dāng)然實際 k8s 的調(diào)度策略不是這么簡單的,系統(tǒng)默認(rèn)的 kube-scheduler 調(diào)度器外還有直接指定Node主機(jī)名、節(jié)點親和性、Pod
    的頭像 發(fā)表于 08-16 18:20 ?1636次閱讀

    KubernetesPod簡易理解

    PodKubernetes中非常重要的概念,也是Kubernetes管理的基本單位。正如其名,Pod像一個豌豆莢,可以容納多個container,擁有相同的IP地址。
    的頭像 發(fā)表于 02-15 10:44 ?1535次閱讀

    Kubernetes Pod如何獨(dú)立工作

    在學(xué)習(xí) Kubernetes 網(wǎng)絡(luò)模型的過程,了解各種網(wǎng)絡(luò)組件的作用以及如何交互非常重要。本文就介紹了各種網(wǎng)絡(luò)組件在 Kubernetes 集群是如何交互的,以及如何幫助每個
    的頭像 發(fā)表于 05-16 14:29 ?843次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何獨(dú)立工作

    Kubernetes Pod如何獲取IP地址呢?

    Kubernetes 網(wǎng)絡(luò)模型的核心要求之一是每個 Pod 都擁有自己的 IP 地址并可以使用該 IP 地址進(jìn)行通信。很多人剛開始使用 Kubernetes 時,還不清楚如何為每個 Pod
    的頭像 發(fā)表于 07-21 10:00 ?1054次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>如何獲取IP地址呢?

    Linux之CPU調(diào)度策略和CPU親和性

    一、調(diào)度策略 調(diào)度進(jìn)程 單個 CPU一次只能執(zhí)行一個進(jìn)程,雖然 Linux 系統(tǒng)通過使用多任務(wù)同時處理多個進(jìn)程,但當(dāng)多個進(jìn)程同時運(yùn)行在一個CPU 上時,它通過交錯執(zhí)行這些進(jìn)程。 內(nèi)核使用進(jìn)程調(diào)度器來
    的頭像 發(fā)表于 12-05 16:38 ?1118次閱讀
    Linux之CPU<b class='flag-5'>調(diào)度</b>策略和CPU<b class='flag-5'>親和性</b>

    Kubernetes Pod常用管理命令詳解

    Kubernetes Pod常用管理命令詳解
    的頭像 發(fā)表于 02-17 14:06 ?507次閱讀
    <b class='flag-5'>Kubernetes</b> <b class='flag-5'>Pod</b>常用管理命令<b class='flag-5'>詳解</b>