日B视频 亚洲,啪啪啪网站一区二区,91色情精品久久,日日噜狠狠色综合久,超碰人妻少妇97在线,999青青视频,亚洲一区二卡,让本一区二区视频,日韩网站推荐

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

完善資料讓更多小伙伴認識你,還能領取20積分哦,立即完善>

3天內不再提示

Pod一直處于Pending狀態(tài)?什么是Pod拓撲約束?

馬哥Linux運維 ? 來源:稀土掘金 ? 2023-12-18 11:46 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

起因: 今天在部署組件的時候,發(fā)現組件的pod一直處于Pending狀態(tài),報錯顯示的原因是:不滿足Pod拓撲分布約束,看了代碼發(fā)現是原來同事給組件新增了Pod拓撲約束。對于Pod拓撲約束,我先前并沒有認真了解過,剛好可以借這個排查問題的機會深入了解什么是Pod拓撲約束。

文檔參考主要是上述兩篇k8s官方的文檔,建議英文功底好的可以直接看第二篇文檔。

topologySpreadConstraints是一個Pod Spec層級的字段,其定義的結構體如下:


spec:
  topologySpreadConstraints:
  - maxSkew: 
    topologyKey: 
    whenUnsatisfiable: 
    labelSelector: 

在官方文檔里還描述了許多beta特性的字段,但如果是剛上手Pod拓撲約束的小伙伴,可以從這上面的四個基本字段入手,先把這四個字段的含義吃透。

5e5a9f6a-9c10-11ee-8b88-92fbcf53809c.jpg

labelSelector:labelSelector是用來尋找匹配標簽的Pod,對于每一個拓撲域來說,k8s調度器會計算其中匹配labelSelector的Pod數量。在上圖中,我們定義的拓撲約束只針對含有l(wèi)abel app=foo的Pod生效。

topologyKey:topologyKey用于一個拓撲域,這個值通常情況下是定義在節(jié)點上的標簽。在上圖中,我們定義的拓撲域就是zone,也就是含有zone這個label的節(jié)點才算在我們的拓撲域中。

maxSkew:maxSkew指的就是Pod分布在不同的拓撲域中的數量差異。maxSkew要求其設定的值大于0,其值越小,說明我們期望Pod能夠越均衡地打散分布在拓撲域中,其值越大,則反之。在上圖中,如果新的Pod調度到Zone1中,則Zone1和Zone2的skew就是3-0=3,如果新的Pod調度到Zone2中,則Zone1和Zone2的skew就是2-1=1.

whenUnsatisfiable:whenUnsatisfiable指當skew不滿足maxSkew時,調度器會執(zhí)行的動作,可選值為:

DoNotSchedule:(默認值)不調度。

ScheduleAnyway:仍然調度,但會趨向于調度到使skew最小的拓撲域中。

了解到這里,我就已經排查出來調度不上去的原因了:集群是一個兩節(jié)點的集群(1master+1worker),但這兩個節(jié)點屬于同一個可用區(qū),但有一點奇怪的是,按照算法,應該會有一個Pod調度上去,另一個Pod處于Pending狀態(tài),但現實卻是兩個Pod都處于Pending狀態(tài)。繼續(xù)看代碼,我發(fā)現了同事不僅用了topologySpreadConstraints,還結合了親和性反親和性一起使用。

Pod拓撲約束可以結合親和和反親和特性一起使用,達到更豐富的效果,以實際業(yè)務場景中的代碼為例:


    affinity:
        podAntiAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            - labelSelector:
                matchLabels:
                  app.kubernetes.io/name: app-server
              topologyKey: kubernetes.io/hostname
      schedulerName: default-scheduler
     topologySpreadConstraints:
        - maxSkew: 1
          topologyKey: topology.kubernetes.io/zone
          whenUnsatisfiable: DoNotSchedulable
          labelSelector:
            matchLabels:
              app.kubernetes.io/instance: app-server
              app.kubernetes.io/name: app-server

可以看到,我們設置了Pod 反親和性,禁止符合條件的Pod調度到同一個節(jié)點上(可能是出于容災或其他方面的考慮),再看Pod拓撲約束,要求Pod均勻地分布在每個可用區(qū)中,且每個可用區(qū)之間符合條件的Pod的數量差值最大為1,如果不滿足的條件下,禁止調度。(強打散Pod到每個可用區(qū)中,可能是出于網絡帶寬,cpu內存等資源角度的考慮)。

因此,在僅有兩個節(jié)點的集群中,且這兩個節(jié)點還是屬于同一個可用區(qū)的情況下,無法滿足上述的調度條件,因此兩個Pod均處于Pending狀態(tài)。

解決方式有兩種,可以設置maxSkew的值為2,或者設置whenUnsatisfiable的值為ScheduleAnyway。

鏈接:https://juejin.cn/post/7245179553886486584







審核編輯:劉清

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

    關注

    0

    文章

    34

    瀏覽量

    16517
  • POD
    POD
    +關注

    關注

    0

    文章

    18

    瀏覽量

    6303
  • 調度器
    +關注

    關注

    0

    文章

    99

    瀏覽量

    5719

原文標題:Pod一直處于Pending狀態(tài)?可以看一下是不是拓撲約束的問題

文章出處:【微信號:magedu-Linux,微信公眾號:馬哥Linux運維】歡迎添加關注!文章轉載請注明出處。

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

掃碼添加小助手

加入工程師交流群

    評論

    相關推薦
    熱點推薦

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

    100~200KB 左右,是個匯編語言寫的、永遠處于“暫?!?b class='flag-5'>狀態(tài)的容器。由于有了這樣個 Infra container 之后,其他所有容器都會通過 Join Namespace
    發(fā)表于 09-20 15:12

    Pod資源配置

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

    Land Pattern and POD

    Land Pattern and POD
    發(fā)表于 03-05 15:59 ?0次下載
    Land Pattern and <b class='flag-5'>POD</b>

    Kubernetes組件pod核心原理

    1. 核心組件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是個容器,裝的是 docker 創(chuàng)建的容器,也就是用來封裝容器的
    的頭像 發(fā)表于 09-02 09:27 ?2609次閱讀

    pod底層網絡和數據存儲是如何進行的

    1. 核心組件原理 —— pod 核心原理 1.1 pod 是什么 pod 也可以理解是個容器,裝的是 docker 創(chuàng)建的容器,也就是用來封裝容器的
    的頭像 發(fā)表于 09-24 11:35 ?2461次閱讀

    如何利用Docker實現Pod

    Container 和 Pod 是相似的。在底層,它們主要依賴 Linux 命名空間和 cgroup。但是,Pod 不僅僅是組容器。Pod
    發(fā)表于 11-14 12:51 ?1936次閱讀

    Kubernetes中的Pod簡易理解

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

    什么是CNI,基于Calico的Pod網絡介紹

    個Node上都會有個tunl0的虛擬網卡,這個網卡可以理解成網橋,所有Pod都要基于此網橋來和其它Pod通信。 ② 每生成個新的
    發(fā)表于 04-20 09:37 ?4330次閱讀

    POD到底是什么?聊聊POD

    POD,即Plain Old Data的縮寫,plain代表普通,Old代表舊,從字面意思看是老的、普通的數據類型。
    的頭像 發(fā)表于 06-19 15:24 ?8871次閱讀

    如何快速查看Kubernetes Pod崩潰前的日志

    pod處于crash狀態(tài)的時候,容器不斷重啟,此時用 kubelet logs 可能出現一直捕捉不到日志。
    的頭像 發(fā)表于 07-06 09:25 ?2433次閱讀

    Pod是如何在底層實現的?如何使用Docker創(chuàng)建Pod?

    剛開始接觸 Kubernetes 時,你學到的第件事就是每個 Pod 都有個唯的 IP 和主機名,并且在同
    的頭像 發(fā)表于 08-14 10:33 ?2219次閱讀
    <b class='flag-5'>Pod</b>是如何在底層實現的?如何使用Docker創(chuàng)建<b class='flag-5'>Pod</b>?

    Kubernetes Pod常用管理命令詳解

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

    詳解Kubernetes中的Pod調度親和性

    在 Kubernetes(K8s)中,Pod 調度親和性(Affinity) 是種高級調度策略,用于控制 Pod 與節(jié)點(Node)或其他 Pod 之間的關聯(親和)或反關聯(反親和
    的頭像 發(fā)表于 06-07 13:56 ?1116次閱讀

    Kubernetes Pod異常問題排查實戰(zhàn)

    集群跑著跑著,Pod 掛了。Slack 告警刷屏,腦子片空白。打開終端敲 kubectl get pods,看到堆 CrashLoopBackOff、ImagePullBackO
    的頭像 發(fā)表于 03-18 15:43 ?267次閱讀

    Kubernetes Pod啟動失敗的各種場景及其排障方法

    在 Kubernetes 日常運維中,Pod 起不來是最常見的故障形態(tài)之。很多運維工程師看到 Pod 狀態(tài)不是 Running 時,第
    的頭像 發(fā)表于 04-13 13:53 ?107次閱讀
    新龙县| 湘乡市| 衢州市| 武义县| 法库县| 迭部县| 临颍县| 新巴尔虎右旗| 泰来县| 莆田市| 烟台市| 武安市| 宁安市| 厦门市| 咸丰县| 华坪县| 东乡县| 兰州市| 海丰县| 宜丰县| 潼南县| 景宁| 南康市| 沁阳市| 剑河县| 利辛县| 永泰县| 沈丘县| 榆中县| 黑龙江省| 汕尾市| 治县。| 建昌县| 宜兴市| 哈密市| 桑植县| 右玉县| 贡嘎县| 阳西县| 无极县| 奈曼旗|