K8S調度之標簽選擇器


Kubernetes 調度簡介

除了讓 kubernetes 集群調度器自動為 pod 資源選擇某個節點(默認調度考慮的是資源足夠,並且 load 盡量平均),有些情況我們希望能更多地控制 pod 應該如何調度。比如,集群中有些機器的配置更好( SSD,更好的內存等),我們希望比較核心的服務(比如說數據庫)運行在上面;或者某兩個服務的網絡傳輸很頻繁,我們希望它們最好在同一台機器上,或者同一個機房。有一些特殊的應用,我們就希望它們能運行在我們指定的節點上,還有些情況下,我們希望某個應用在所有的節點上都能運行一份。

針對不同的應用場景,kubernetes內置了多種調度方式可供選擇。包括標簽選擇器,daemonsets,節點親和性,pod親和性,污點與容忍等。

本篇文檔,我們先從最簡單的標簽選擇器開始。

標簽選擇器

這種方式其實就是我們最常用的使用label的方式,給某一個node打上特定的標簽,然后在啟動pod的時候,通過nodeSelector指定要調度到的node節點的標簽。

給node打標簽:

kubectl label nodes <node-name> <label-key>=<label-value>

示例:

kubectl label nodes k8s-node1 envir=live
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  labels:
    env: test
spec:
  containers:
  - name: nginx
    image: nginx
    imagePullPolicy: IfNotPresent
  nodeSelector:
    envir: live

需要說明的是,nodeSelector的方式比較簡單直觀,但是不夠靈活,后面,它會被Node Affinity替代。


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM