1. 程式人生 > >K8S調度之標簽選擇器

K8S調度之標簽選擇器

pod ber AD tor pre TP 網絡 除了 selector

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替代。

K8S調度之標簽選擇器