最新国产好看的视频,伊人天堂AV在线,国产Aaaaaa视频,蜜臀视频在线观看一区,人妻av色图,密臀久久久精品影片,青青视频免费观看毛片,久草在线观看视,国产三级精品色情在线

kubernetes中pod的調(diào)度親和性affinity詳解

 更新時間:2025年09月29日 09:13:43   作者:塵小新  
本文簡要介紹了Kubernetes中的三種親和性機制:節(jié)點親和性(控制Pod調(diào)度到指定節(jié)點)、Pod親和性(與特定Pod共處同一節(jié)點)和Pod反親和性(避免與特定Pod共處同一節(jié)點),并通過示例說明了其配置方式及實際調(diào)度效果

一、概述

在k8s當(dāng)中,“親和性”分為三種,節(jié)點親和性、pod親和性、pod反親和性;

親和性分類名稱解釋說明
nodeAffinity節(jié)點親和性通過【節(jié)點】標(biāo)簽匹配,用于控制pod調(diào)度到哪些node節(jié)點上,以及不能調(diào)度到哪些node節(jié)點上;(主角node節(jié)點)
podAffinitypod親和性通過【節(jié)點+pod】標(biāo)簽匹配,可以和哪些pod部署在同一個節(jié)點上(拓撲域);(主角是pod)
podAntiAffinitypod反親和性通過【節(jié)點+pod】標(biāo)簽匹配,與pod親和性相反,就是和那些pod不在一個節(jié)點上(拓撲域);

二、nodeAffinity節(jié)點親和性

1. 給節(jié)點打上標(biāo)簽

[root@master ~]# kubectl label nodes master k8s=master

查看三個節(jié)點的標(biāo)簽,分別擁有k8s=master,k8s=node1,k8s=node2標(biāo)簽 

2.編輯資源清單設(shè)置節(jié)點親和性

測試前把我們資源都刪除掉

[root@master ~]# kubectl delete pod,svc,deploy --all
pod "taint-demo-58f97cc65c-4nhvs" deleted
pod "taint-demo-58f97cc65c-lh55g" deleted
pod "taint-demo-58f97cc65c-smjd5" deleted
pod "taint-demo-58f97cc65c-tr9th" deleted
pod "taint-demo-58f97cc65c-tsvdp" deleted
service "kubernetes" deleted
deployment.apps "taint-demo" deleted

編輯資源清單

ot@master deployment-demo]# cat dm-affinity.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-affinity
spec:
  replicas: 20
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      affinity:                 #聲明親和性
        nodeAffinity:          #聲明親和性類型
          requiredDuringSchedulingIgnoredDuringExecution:     #硬限制,必須滿足的條件有哪些(不滿足下邊的條件親和性就設(shè)置失?。?
            nodeSelectorTerms: #設(shè)置節(jié)點選擇器列表
            - matchExpressions:
              - key: k8s
                values:
                - node1
                - node2 
                operator: In 
          preferredDuringSchedulingIgnoredDuringExecution: #軟限制,不一定滿足,但會優(yōu)先滿足,相當(dāng)于調(diào)高了調(diào)度到優(yōu)先級
          - weight: 10 #配置權(quán)重
            preference: #偏向性
              matchExpressions:
              - key: k8s
                values:
                - node1
                #關(guān)聯(lián)關(guān)系,表示key和values的關(guān)系
                #In:表示包含關(guān)系(value必須寫)
                #NotIn:表示不包含(value必須寫)
                #Exists: 表示存在關(guān)系(不能寫value)
                #DoesNotExist:不存在(不能寫value)
                #Gt:大于(value必須是一個單一的元素,且值將被解釋稱一個整數(shù))
                #Lt:小于(value必須是一個單一的元素,且值將被解釋稱一個整數(shù))         
                operator: In  
                   
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

3.查看資源驗證親和性

我們可以看到,創(chuàng)建的20個Pod只有一個被調(diào)度到node2上,上邊節(jié)點調(diào)度更親和節(jié)點1

三、podAffinity  pod親和性

基于“節(jié)點標(biāo)簽”進行設(shè)置,第一個pod副本創(chuàng)建在了哪個節(jié)點上,那么其余副本也會創(chuàng)建在這個節(jié)點上;

拓撲域:節(jié)點機器的標(biāo)簽的key和value都相等的機器,就是同一個拓撲域;

1. 編輯資源清單設(shè)置pod親和性

[root@master deployment-demo]# cat dm-affinity.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-affinity
spec:
  replicas: 20
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      affinity:                 #聲明親和性
        podAffinity:          #聲明親和性類型
          requiredDuringSchedulingIgnoredDuringExecution:     #硬限制,必須滿足的條件有哪些(不滿足下邊的條件親和性就設(shè)置失?。?
          #設(shè)置拓撲域,指定【節(jié)點的標(biāo)簽名】
          #【節(jié)點key】就是說,設(shè)置了拓撲域,pod就會往這個標(biāo)簽的節(jié)點進行創(chuàng)建
          # 只要滿足key是k8s節(jié)點的表情,那么就是同一個拓撲域
          - topologyKey: k8s
            # 【pod標(biāo)簽】確定pod的表情,用于二次確認,選中了拓撲域(節(jié)點標(biāo)簽的key),再次選中pod標(biāo)簽才能確認調(diào)度到哪個節(jié)點
            labelSelector:
              matchExpressions:
              #意思是是說,只要key的值是k8s的pod創(chuàng)建在了哪個節(jié)點,“我”就跟隨他。也創(chuàng)建在這個節(jié)點上;
              - key: k8s
                #建議設(shè)置:in的方式進行匹配,更精準,就要設(shè)置value了
                operator: Exists # Exists的方式進行匹配,這里value就不能設(shè)置了
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

2、創(chuàng)建資源

[root@master deployment-demo]# kubectl apply -f dm-affinity.yaml 

3、查看結(jié)果

都運行在了node1節(jié)點上

四、podAntAffinity-pod的反親和性

  • pod的親和性:符合拓撲域的范圍,指定標(biāo)簽的pod創(chuàng)建在哪里,其他pod就創(chuàng)建在哪里;
  • pod的反親和性:與之相反,符合拓撲域的范圍,指定標(biāo)簽的pod創(chuàng)建在哪里,其他pod就不能創(chuàng)建在哪里;

1、編輯資源清單

親和性和反親和性的配置就下邊一個標(biāo)紅差別,其它配置幾乎一樣

[root@master deployment-demo]# cat dm-affinity.yaml 
apiVersion: apps/v1
kind: Deployment
metadata:
  name: dm-affinity
spec:
  replicas: 5
  selector:
    matchLabels:
      k8s: dolphin
  template:
    metadata:
      name: pod01
      labels:
        k8s: dolphin
    spec:
      affinity:                 #聲明親和性
        podAntiAffinity:          #聲明親和性類型
          requiredDuringSchedulingIgnoredDuringExecution:     #硬限制,必須滿足的條件有哪些(不滿足下邊的條件親和性就設(shè)置失?。?
          #設(shè)置拓撲域,指定【節(jié)點的標(biāo)簽名】
          #【節(jié)點key】就是說,設(shè)置了拓撲域,pod就會往這個標(biāo)簽的節(jié)點進行創(chuàng)建
          # 只要滿足key是k8s節(jié)點的表情,那么就是同一個拓撲域
          - topologyKey: k8s
            # 【pod標(biāo)簽】確定pod的表情,用于二次確認,選中了拓撲域(節(jié)點標(biāo)簽的key),再次選中pod標(biāo)簽才能確認調(diào)度到哪個節(jié)點
            labelSelector:
              matchExpressions:
              #意思是是說,只要key的值是k8s的pod創(chuàng)建在了哪個節(jié)點,“我”就跟隨他。也創(chuàng)建在這個節(jié)點上;
              - key: k8s
                #建議設(shè)置:in的方式進行匹配,更精準,就要設(shè)置value了
                operator: Exists # Exists的方式進行匹配,這里value就不能設(shè)置了
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

2、創(chuàng)建資源

[root@master deployment-demo]# kubectl apply -f dm-affinity.yaml 

3、查看結(jié)果

 因為我們集群中只有2個節(jié)點可分配資源,所以我們可以看到上圖有2個pod資源被分配在不同節(jié)點上。

其它三個因為節(jié)點都被占用了,根據(jù)反親和性特點,余下的有“k8s”這個標(biāo)簽pod不會再創(chuàng)建在這兩個節(jié)點上了,所以一直處于Peding狀態(tài)。

總結(jié)

以上為個人經(jīng)驗,希望能給大家一個參考,也希望大家多多支持腳本之家。

相關(guān)文章

  • 云原生技術(shù)持久化存儲PV與PVC

    云原生技術(shù)持久化存儲PV與PVC

    這篇文章主要介紹了云原生技術(shù)持久化存儲PV與PVC
    2022-03-03
  • K8S中若要掛載其他命名空間中的 Secret操作方法

    K8S中若要掛載其他命名空間中的 Secret操作方法

    在Kubernetes中,通過創(chuàng)建ServiceAccount和RoleBinding,可以實現(xiàn)一個命名空間中的Pod掛載另一個命名空間中的Secret,以下是具體步驟和示例代碼,包括創(chuàng)建ServiceAccount、Role和RoleBinding,以及在Pod中使用這些資源掛載Secret,感興趣的朋友一起看看吧
    2025-03-03
  • k8s中對gkv的理解TypeData詳解

    k8s中對gkv的理解TypeData詳解

    Kubernetes資源通過GKV(Group、Version、Kind)標(biāo)識,用于分類、版本管理和資源識別,在YAML配置中,apiVersion和kind字段分別體現(xiàn)GKV,是K8s資源操作的基礎(chǔ),通過GKV,Kubernetes可以正確解析和執(zhí)行資源配置,并確保版本兼容性
    2025-11-11
  • k8s對外服務(wù)之ingress使用詳解

    k8s對外服務(wù)之ingress使用詳解

    Ingress作為K8s的7層負載均衡器,通過單一入口管理多個服務(wù),使用IngressController(如Nginx)和資源,支持按域名/路徑路由,解決端口沖突與配置復(fù)雜問題
    2025-07-07
  • kubernetes?k8s?CRD自定義資源學(xué)習(xí)筆記

    kubernetes?k8s?CRD自定義資源學(xué)習(xí)筆記

    這篇文章主要介紹了kubernetes?k8s?CRD自定義資源學(xué)習(xí)筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-05-05
  • IoT邊緣集群Kubernetes?Events告警通知實現(xiàn)示例

    IoT邊緣集群Kubernetes?Events告警通知實現(xiàn)示例

    這篇文章主要為大家介紹了IoT邊緣集群Kubernetes?Events告警通知實現(xiàn)示例詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2023-02-02
  • K8S的dashboard使用token登錄的操作流程

    K8S的dashboard使用token登錄的操作流程

    Dashboard 支持 Kubeconfig 和 Token 兩種認證方式,這里測試 Token 認證方式登錄,本文介紹K8S的dashboard如何使用token登錄,感興趣的朋友跟隨小編一起看看吧
    2024-06-06
  • K8s?HPA(自動伸縮)解讀

    K8s?HPA(自動伸縮)解讀

    HPA(HorizontalPodAutoscaler)根據(jù)CPU/內(nèi)存使用率自動調(diào)整Pod數(shù)量,實現(xiàn)水平擴展,與垂直擴展不同,需安裝MetricsServer,支持Deployment、StatefulSet等資源,但不適用于DaemonSet
    2025-08-08
  • Kubernetes調(diào)度管理優(yōu)先級和搶占機制詳解

    Kubernetes調(diào)度管理優(yōu)先級和搶占機制詳解

    這篇文章主要為大家介紹了Kubernetes調(diào)度管理優(yōu)先級和搶占機制詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    2022-11-11
  • 云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解

    云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解

    這篇文章主要介紹了云原生技術(shù)kubernetes調(diào)度單位pod的使用詳解,幫助大家更好的理解和學(xué)習(xí)使用K8S,感興趣的朋友可以了解下
    2021-03-03

最新評論

湾仔区| 邮箱| 沁源县| 遂平县| 抚远县| 呼伦贝尔市| 武邑县| 延长县| 铜山县| 喜德县| 榆树市| 正安县| 定兴县| 凤凰县| 漾濞| 稻城县| 阿城市| 新泰市| 都昌县| 虞城县| 安阳县| 滕州市| 安阳市| 鄄城县| 岑巩县| 始兴县| 蕲春县| 东辽县| 垣曲县| 璧山县| 柘荣县| 保德县| 贵州省| 绍兴县| 深水埗区| 呈贡县| 吉林省| 大新县| 宁河县| 原阳县| 平武县|