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

溫馨提示×

溫馨提示×

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

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

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

安阳县| 镇安县| 吴江市| 达州市| 错那县| 孝昌县| 静海县| 城步| 都江堰市| 车致| 金昌市| 富锦市| 东乌| 嘉荫县| 全州县| 印江| 浦北县| 东城区| 南召县| 六枝特区| 阜阳市| 文登市| 万盛区| 板桥市| 河东区| 镇江市| 兰西县| 滨海县| 义马市| 常熟市| 建平县| 五原县| 靖州| 水富县| 汝州市| 逊克县| 宿迁市| 河北区| 金沙县| 辛集市| 汝南县|