僅在部分節點上執行 Pod
本頁面演示瞭如何作為 Pod 的一部分,僅在部分 節點 上執行 DaemonSet。
準備工作
你需要擁有一個 Kubernetes 叢集,並且 kubectl 命令列工具已配置為與你的叢集通訊。建議你在至少有兩個不作為控制平面主機的節點的叢集上執行本教程。如果你還沒有叢集,你可以使用 minikube 建立一個,或者你可以使用這些 Kubernetes 操場之一。
僅在部分節點上執行 Pod
假設你想執行一個 DaemonSet,但你只需要在具有本地固態硬碟(SSD)儲存的節點上執行這些守護程式 Pod。例如,Pod 可能會為節點提供快取服務,並且只有在低延遲本地儲存可用時,快取才有用。
步驟 1:為你的節點新增標籤
為具有 SSD 的節點新增標籤 ssd=true
。
kubectl label nodes example-node-1 example-node-2 ssd=true
步驟 2:建立清單
讓我們建立一個 DaemonSet,它將僅在標有 SSD 的 節點 上提供守護程式 Pod。
接下來,使用 nodeSelector
確保 DaemonSet 僅在 ssd
標籤設定為 "true"
的節點上執行 Pod。
apiVersion: apps/v1
kind: DaemonSet
metadata:
name: ssd-driver
labels:
app: nginx
spec:
selector:
matchLabels:
app: ssd-driver-pod
template:
metadata:
labels:
app: ssd-driver-pod
spec:
nodeSelector:
ssd: "true"
containers:
- name: example-container
image: example-image
步驟 3:建立 DaemonSet
使用 kubectl create
或 kubectl apply
從清單建立 DaemonSet
讓我們將另一個節點標記為 ssd=true
。
kubectl label nodes example-node-3 ssd=true
標記節點會自動觸發控制平面(特別是 DaemonSet 控制器)在該節點上執行新的守護程式 Pod。
kubectl get pods -o wide
輸出類似於:
NAME READY STATUS RESTARTS AGE IP NODE
<daemonset-name><some-hash-01> 1/1 Running 0 13s ..... example-node-1
<daemonset-name><some-hash-02> 1/1 Running 0 13s ..... example-node-2
<daemonset-name><some-hash-03> 1/1 Running 0 5s ..... example-node-3
最後修改於 2023 年 8 月 24 日下午 6:38 PST:使用 code_sample 簡碼代替 code 簡碼 (e8b136c3b3)