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

kubernetes中pod的調度親和性affinity詳解

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

一、概述

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

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

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

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

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

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

2.編輯資源清單設置節(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:     #硬限制,必須滿足的條件有哪些(不滿足下邊的條件親和性就設置失?。?
            nodeSelectorTerms: #設置節(jié)點選擇器列表
            - matchExpressions:
              - key: k8s
                values:
                - node1
                - node2 
                operator: In 
          preferredDuringSchedulingIgnoredDuringExecution: #軟限制,不一定滿足,但會優(yōu)先滿足,相當于調高了調度到優(yōu)先級
          - weight: 10 #配置權重
            preference: #偏向性
              matchExpressions:
              - key: k8s
                values:
                - node1
                #關聯(lián)關系,表示key和values的關系
                #In:表示包含關系(value必須寫)
                #NotIn:表示不包含(value必須寫)
                #Exists: 表示存在關系(不能寫value)
                #DoesNotExist:不存在(不能寫value)
                #Gt:大于(value必須是一個單一的元素,且值將被解釋稱一個整數(shù))
                #Lt:小于(value必須是一個單一的元素,且值將被解釋稱一個整數(shù))         
                operator: In  
                   
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

3.查看資源驗證親和性

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

三、podAffinity  pod親和性

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

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

1. 編輯資源清單設置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:     #硬限制,必須滿足的條件有哪些(不滿足下邊的條件親和性就設置失?。?
          #設置拓撲域,指定【節(jié)點的標簽名】
          #【節(jié)點key】就是說,設置了拓撲域,pod就會往這個標簽的節(jié)點進行創(chuàng)建
          # 只要滿足key是k8s節(jié)點的表情,那么就是同一個拓撲域
          - topologyKey: k8s
            # 【pod標簽】確定pod的表情,用于二次確認,選中了拓撲域(節(jié)點標簽的key),再次選中pod標簽才能確認調度到哪個節(jié)點
            labelSelector:
              matchExpressions:
              #意思是是說,只要key的值是k8s的pod創(chuàng)建在了哪個節(jié)點,“我”就跟隨他。也創(chuàng)建在這個節(jié)點上;
              - key: k8s
                #建議設置:in的方式進行匹配,更精準,就要設置value了
                operator: Exists # Exists的方式進行匹配,這里value就不能設置了
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

2、創(chuàng)建資源

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

3、查看結果

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

四、podAntAffinity-pod的反親和性

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

1、編輯資源清單

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

[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:     #硬限制,必須滿足的條件有哪些(不滿足下邊的條件親和性就設置失?。?
          #設置拓撲域,指定【節(jié)點的標簽名】
          #【節(jié)點key】就是說,設置了拓撲域,pod就會往這個標簽的節(jié)點進行創(chuàng)建
          # 只要滿足key是k8s節(jié)點的表情,那么就是同一個拓撲域
          - topologyKey: k8s
            # 【pod標簽】確定pod的表情,用于二次確認,選中了拓撲域(節(jié)點標簽的key),再次選中pod標簽才能確認調度到哪個節(jié)點
            labelSelector:
              matchExpressions:
              #意思是是說,只要key的值是k8s的pod創(chuàng)建在了哪個節(jié)點,“我”就跟隨他。也創(chuàng)建在這個節(jié)點上;
              - key: k8s
                #建議設置:in的方式進行匹配,更精準,就要設置value了
                operator: Exists # Exists的方式進行匹配,這里value就不能設置了
      containers:
      - name: c1
        image: nginx
        ports:
        - containerPort: 80

2、創(chuàng)建資源

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

3、查看結果

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

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

總結

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

相關文章

  • 云原生技術持久化存儲PV與PVC

    云原生技術持久化存儲PV與PVC

    這篇文章主要介紹了云原生技術持久化存儲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)標識,用于分類、版本管理和資源識別,在YAML配置中,apiVersion和kind字段分別體現(xiàn)GKV,是K8s資源操作的基礎,通過GKV,Kubernetes可以正確解析和執(zhí)行資源配置,并確保版本兼容性
    2025-11-11
  • k8s對外服務之ingress使用詳解

    k8s對外服務之ingress使用詳解

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

    kubernetes?k8s?CRD自定義資源學習筆記

    這篇文章主要介紹了kubernetes?k8s?CRD自定義資源學習筆記,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進步,早日升職加薪
    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/內存使用率自動調整Pod數(shù)量,實現(xiàn)水平擴展,與垂直擴展不同,需安裝MetricsServer,支持Deployment、StatefulSet等資源,但不適用于DaemonSet
    2025-08-08
  • Kubernetes調度管理優(yōu)先級和搶占機制詳解

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

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

    云原生技術kubernetes調度單位pod的使用詳解

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

最新評論

咸宁市| 德安县| 定兴县| 苏尼特左旗| 泾川县| 迭部县| 鞍山市| 利辛县| 应城市| 深水埗区| 万全县| 延津县| 巴楚县| 沁源县| 锡林郭勒盟| 哈巴河县| 商丘市| 浦城县| 定南县| 友谊县| 古蔺县| 离岛区| 尼木县| 夏河县| 长寿区| 潢川县| 邳州市| 郑州市| 孝感市| 闵行区| 恭城| 冕宁县| 荣成市| 绩溪县| 迁西县| 红原县| 白城市| 合阳县| 绵竹市| 呼和浩特市| 资讯 |