亚洲激情专区-91九色丨porny丨老师-久久久久久久女国产乱让韩-国产精品午夜小视频观看

溫馨提示×

溫馨提示×

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

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

Kubernetes中的kube-scheduler組件怎么用

發布時間:2022-01-05 10:25:35 來源:億速云 閱讀:170 作者:柒染 欄目:云計算

這篇文章給大家介紹Kubernetes中的kube-scheduler組件怎么用,內容非常詳細,感興趣的小伙伴們可以參考借鑒,希望對大家能有所幫助。

Kubernetes作為一個容器編排調度引擎,資源調度是它的最基本也是最重要的功能。當開發者部署一個應用時它運行在哪個節點?這個節點滿不滿足開發的運行要求?Kubernetes又是如何進行資源調度的呢?

在Kubernetes中有一個kube-scheduler組件,該組件運行在master節點上,它主要負責pod的調度。Kube-scheduler監聽kube-apiserver中是否有還未調度到node上的pod(即Spec.NodeName為空的Pod),再通過特定的算法為pod指定分派node運行。如果分配失敗,則將該pod放置調度隊列尾部以重新調度。調度主要分為幾個部分:首先是預選過程,過濾不滿足Pod要求的節點。然后是優選過程,對通過要求的節點進行優先級排序,最后選擇優先級最高的節點分配,其中涉及到的兩個關鍵點是過濾和優先級評定的算法。調度器使用一組規則過濾不符合要求的節點,其中包括設置了資源的request和指定了Nodename或者其他親和性設置等等。優先級評定將過濾得到的節點列表進行打分,調度器考慮一些整體的優化策略,比如將Deployment控制的多個副本集分配到不同節點上等。

Kubernetes中的kube-scheduler組件怎么用

資源請求及限制對pod調度的影響

在部署應用時,開發者會考慮到使這個應用運行起來需要多少的內存和CPU資源的使用量,這樣才能判斷應將他運行在哪個節點上。在部署文件resource屬性中添加requests字段用于說明運行該容器所需的最少資源,當調度器開始調度該Pod時,調度程序確保對于每種資源類型,計劃容器的資源請求總和必須小于節點的容量才能分配該節點運行Pod,resource屬性中添加limits字段用于限制容器運行時所獲得的最大資源。如果該容器超出其內存限制,則可能被終止。 如果該容器可以重新啟動,kubelet會將它重新啟動。如果調度器找不到合適的節點運行Pod時,就會產生調度失敗事件,調度器會將Pod放置調度隊列以循環調度,直到調度完成。

在下面例子中,運行一個nginx Pod,資源請求了256Mi的內存和100m的CPU,調度器將判斷哪個節點還剩余這么多的資源,尋找到了之后就會將這個Pod調度上去。同時也設置了512Mi的內存和300m的CPU的使用限制,如果該Pod運行之后超出了這一限制就將被重啟甚至被驅逐。

apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx
    resources:
      requests:
        memory: "256Mi"
        cpu: "100m"
      limits:
        memory: "512Mi"
        cpu: "300m"

查看調度事件events

在部署應用后,可以使用 kubectl describe 命令進行查看Pod的調度事件,下面是一個coredns被成功調度到node3運行的事件記錄。

$ kubectl describe po coredns-5679d9cd77-d6jp6 -n kube-system
...
Events:
  Type    Reason     Age   From               Message
  ----    ------     ----  ----               -------
  Normal  Scheduled  29s   default-scheduler  Successfully assigned kube-system/coredns-5679d9cd77-d6jp6 to node3
  Normal  Pulled     28s   kubelet, node3     Container image "grc.io/kubernetes/coredns:1.2.2" already present on machine
  Normal  Created    28s   kubelet, node3     Created container
  Normal  Started    28s   kubelet, node3     Started container

下面是一個coredns被調度失敗的事件記錄,根據記錄顯示不可調度的原因是沒有節點滿足該Pod的內存請求。

$ kubectl describe po coredns-8447874846-5hpmz -n kube-system
...
Events:
  Type     Reason            Age                From               Message
  ----     ------            ----               ----               -------
  Warning  FailedScheduling  22s (x3 over 24s)  default-scheduler  0/3 nodes are available: 3 Insufficient memory.

label選擇器對pod調度的影響

例如開發者需要部署一個ES集群,由于ES對磁盤有較高的要求,而集群中只有一部分節點有SSD磁盤,那么就需要將標記一下帶有SSD磁盤的節點即給這些節點打上Lable,讓ES的pod只能運行在帶這些標記的節點上。

Lable是附著在K8S對象(如Pod、Service等)上的鍵值對。它可以在創建對象的時候指定,也可以在對象創建后隨時指定。Kubernetes最終將對labels最終索引和反向索引用來優化查詢和watch,在UI和命令行中會對它們排序。通俗的說,就是為K8S對象打上各種標簽,方便選擇和調度。

關于Kubernetes中的kube-scheduler組件怎么用就分享到這里了,希望以上內容可以對大家有一定的幫助,可以學到更多知識。如果覺得文章不錯,可以把它分享出去讓更多的人看到。

向AI問一下細節

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

AI

东海县| 汽车| 郓城县| 汝城县| 白玉县| 太谷县| 进贤县| 孙吴县| 东丽区| 东莞市| 寻乌县| 榆社县| 随州市| 大洼县| 眉山市| 六安市| 札达县| 平邑县| 巴青县| 尚义县| 抚州市| 西乡县| 桓仁| 高平市| 中牟县| 桑植县| 云阳县| 延安市| 宜兰市| 正定县| 兴和县| 常山县| 沙河市| 安塞县| 宜州市| 韶关市| 盱眙县| 出国| 南投市| 东源县| 东阳市|