中文字幕av专区_日韩电影在线播放_精品国产精品久久一区免费式_av在线免费观看网站

溫馨提示×

溫馨提示×

您好,登錄后才能下訂單哦!

密碼登錄×
登錄注冊×
其他方式登錄
點擊 登錄注冊 即表示同意《億速云用戶服務條款》

K8S容器調度優先級誤設導致集群雪崩踩坑記錄

發布時間:2020-06-23 16:30:33 來源:網絡 閱讀:833 作者:筑夢攻城獅 欄目:云計算

????????今天上班的時候,突然收到集群很多容器調度失敗的告警,大致如下;

K8S容器調度優先級誤設導致集群雪崩踩坑記錄

????????

????????看到大量容器調度失敗,里面查了下管理平臺,看看這個時間段內有沒有哪個業務發布,果然發現有一個轉碼服務(CPU消耗性)的業務在這個時間點發布了一批任務。但這批任務發布為什么會導致出現一堆任務調度失敗呢?

????????緊接著我們抽查了幾個告警的容器,發現這些容器狀態都處于proeempted (搶占)狀態,原因只能是有更高優先級的pod調度到這臺node節點,把上面原有的pod 排擠走。但是剛剛發布的這個業務并沒有設置容器調度優先級,為什么會比其他容器優先級高呢?


K8S容器調度優先級誤設導致集群雪崩踩坑記錄


????????經排查是因為同事在管理平臺上調整了容器默認優先級,由原來的默認低優先級修改成高優先級,具體背景是這樣:

????????前幾天有業務反饋他們的業務跑著跑著突然容器掛掉了,最后發現是因為調度了高優先級容器過去導致原本低優先級pod被排擠走。業務方同事覺得這個策略不靠譜,如果大家上來都選擇最高優先級,那所有人優先級都一樣了,他們建議默認策略改成最高優先級,允許業務按需將優先級調低,優先級低的容器在最后做成本分攤的時候適當打折,于是容器組同事將管理平臺上面的容器調度默認優先級修改為最高優先級。


同事將PriotityClasses 中highest-priority 的 globalDefault 設置成了true,也就是說默認所有新調度的容器都將是最高優先級。

查看 PriorityClasses 配置

apiVersion: scheduling.k8s.io/v1beta1

kind: PriorityClass

metadata:

name: highest-priority

value: 400

globalDefault: true


官網上關于priorityClass 做了以下解釋

????????The globalDefault field indicates that the value of this PriorityClass should be used for Pods without a priorityClassName. Only one PriorityClass with globalDefault set to true can exist in the system. If there is no PriorityClass with globalDefault set, the priority of Pods with no priorityClassName is zero.


????????PriorityClass 還有兩個可選的字段:globalDefault?和?description。globalDefault?表示 PriorityClass 的值應該給那些沒有設置?PriorityClassName?的 Pod 使用。整個系統只能存在一個?globalDefault?設置為 true 的 PriorityClass。如果沒有任何?globalDefault?為 true 的 PriorityClass 存在,那么,那些沒有設置?PriorityClassName?的 Pod 的優先級將為 0。


注意

1、If you upgrade your existing cluster and enable this feature, the priority of your existing Pods is effectively zero.

如果您升級已經存在的集群環境,并且啟用了該功能,那么,那些已經存在系統里面的 Pod 的優先級將會設置為 0。


2、Addition of a PriorityClass with?globalDefault?set to?true?does not change the priorities of existing Pods. The value of such a PriorityClass is used only for Pods created after the PriorityClass is added.

將一個 PriorityClass 的 globalDefault 設置為 true,不會改變系統中已經存在的 Pod 的優先級。也就是說,PriorityClass 的值只能用于在 PriorityClass 添加之后創建的那些 Pod 當中。


????????也就是說priorityClass 中的globalDefault 設為true的話,只針對后續發布的Pod生效,已發布的Pod優先級仍為0

????????今天早上遇到的問題是集群中一臺機器宕機,然后上面所有的pod 都重新調度到其他機器,這些重新調度的Pod擁有最高優先級,當這批容器調度到其他node節點后就會把該節點上面原有的低優先級Pod排擠走。然后這些被排擠走的Pod 又擁有最高優先級調度到其他node節點,又把另外一臺節點上面的Pod擠走,最終造成整個集群雪崩(全部容器重啟了一遍)。


總結:

1、將 priorityClass 中 globalDefault 設置為false 并通過前端默認設置最高優先級

在Pod中指定默認優先級而不是通過globalDefault指定

K8S容器調度優先級誤設導致集群雪崩踩坑記錄


2、關注集群資源使用情況,資源不足時應及時擴容,至少保證集群中掛掉2,3臺node節點后,上面承載的容器能夠漂移到其他剩下的node節點上。



向AI問一下細節

免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。

AI

西昌市| 泗水县| 集贤县| 黔西县| 长寿区| 龙泉市| 桓仁| 娄底市| 瑞昌市| 山丹县| 遂昌县| 略阳县| 安平县| 富顺县| 建平县| 广东省| 靖边县| 镇原县| 吉安市| 信丰县| 双鸭山市| 盐亭县| 英德市| 丰原市| 合作市| 金川县| 宣威市| 阳信县| 望江县| 繁峙县| 乌鲁木齐县| 镇安县| 舒城县| 凤山市| 胶南市| 鄂伦春自治旗| 唐海县| 卓尼县| 阿拉善左旗| 正安县| 蚌埠市|