建立 Kubernetes DaemonSets
適用於:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本文說明如何在 Azure Arc 所啟用的 AKS 中建立及使用 Kubernetes DaemonSet ,以確保叢集中每個背景工作節點上一律有可用的 Pod 複本。 您可以使用 DaemonSet 來改善叢集效能,方法是確保應用程式在所有背景工作節點上執行,以及部署執行維護的 Pod,並提供節點的支持服務。
精靈集概觀
DaemonSet 是 Kubernetes 物件,可確保在叢集中的每個背景工作節點上都能使用設定中定義的 Pod 複本。 將新節點新增至叢集時,DaemonSet 會自動配置到該節點上的 Pod。
同樣地,刪除節點時,節點上執行的 Pod 也會遭到刪除,而且不會在另一個節點上重新排程 (,例如,複本 集) 也會重新排程。 這可讓您克服 Kubernetes 排程限制,並確定特定應用程式部署在叢集內的所有節點上。
DaemonSet 可以改善整體叢集效能。 例如,您可以使用它們來部署 Pod,以針對每個節點執行維護工作和支援服務:
- 執行記錄收集精靈,例如
Fluentd
和Logstash
。 - 執行節點監視精靈,例如
Prometheus
。 - 執行叢集記憶體精靈,例如
glusterd
或ceph
。
雖然 DaemonSet 預設會在每個節點上建立 Pod,但您可以藉由預先定義 YAML 檔案中的節點選取器欄位來限制可接受的節點數目。 DaemonSet 控制器只會在符合節點選取器的節點上建立 Pod。
通常,一個 DaemonSet 會在所有節點上部署一個背景程式類型,但是可以使用不同的標籤,讓多個 Daemonset 控制項成為一個背景程式類型。 Kubernetes 標籤會根據個別節點的特性來指定部署規則。
如需如何使用 DaemonSets 的詳細資訊,請參閱 Kubernetes DaemonSets。
建立 DaemonSet
您可以使用 YAML 檔案來描述 DaemonSet,然後使用 kubectl create
或 kubectl apply
命令 (例如 kubectl create –f example-daemon.yaml
) 來建立 DaemonSet。
下列範例說明使用 nginx 映像的 DaemonSet 設定檔功能:
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: example-daemon
spec:
template:
metadata:
labels:
app: nginx
spec:
containers:
-name: nginx
image: nginx
若要查看 DaemonSet 的目前狀態,請使用 kubectl describe
命令 (例如 kubectl describe daemonset example-daemon
)。
限制特定節點的 DaemonSet
根據預設,DaemonSet 會在叢集中的所有節點上建立 Pod,但使用節點選取器,您可以將它們設定為只在特定節點中建立 Pod。 如果您想要將 DaemonSet 限制為特定節點,請使用 kubectl label
命令。
更新 DaemonSet
您可以使用 kubectl edit ds<NAME>
命令來更新 DaemonSet。 不過,建議您編輯原始組態檔,然後在最初建立時使用 kubectl apply
命令。 套用更新之後,您可以使用 命令來檢視更新狀態 kubectl rollout status ds <daemonset-name>
。
刪除 DaemonSet
若要移除 DaemonSet,請使用 kubectl delete
命令 (例如 kubectl delete –f example-daemon.yaml -n monitoring
)。 指定 DaemonSet 檔名時,您應該小心刪除 DaemonSet 會清除部署的所有 Pod。
後續步驟
意見反應
https://aka.ms/ContentUserFeedback。
即將登場:在 2024 年,我們將逐步淘汰 GitHub 問題作為內容的意見反應機制,並將它取代為新的意見反應系統。 如需詳細資訊,請參閱:提交並檢視相關的意見反應