建立 Kubernetes DaemonSets
適用於:Azure Local 22H2 上的 AKS、Windows Server 上的 AKS
本文說明如何在 Azure Arc 所啟用的 AKS 中建立和使用 Kubernetes DaemonSet ,以確保叢集中每個背景工作節點上一律有可用的 Pod 複本。 您可以使用 DaemonSet 來改善叢集效能,方法是確保應用程式在所有背景工作節點上執行,以及部署執行維護的 Pod,並為節點提供支援服務。
DaemonSets 概觀
DaemonSet 是 Kubernetes 物件,可確保叢集中每個背景工作節點上一律可使用設定中所定義的 Pod 複本。 當新的節點新增至叢集時,DaemonSet 會自動在該節點上配置 Pod。
同樣地,刪除節點時,節點上執行的 Pod 也會遭到刪除,而且不會在另一個節點上重新排程(例如,如 ReplicaSets 發生的情況)。 這可讓您克服 Kubernetes 排程限制,並確定特定應用程式部署在叢集內的所有節點上。
DaemonSets 可以改善整體叢集效能。 例如,您可以使用 Pod 來部署 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
下列範例說明使用 nginx 映射的 DaemonSet 組態檔功能:
---
apiVersion: apps/v1
kind: DaemonSet
metadata:
labels:
app: nginx
name: example-daemon
spec:
template:
metadata: null
labels:
app: nginx
containers: null
name: nginx
image: nginx
若要檢視 DaemonSet 的目前狀態,請使用 kubectl describe
命令 (例如 , kubectl describe daemonset example-daemon
。
將 DaemonSet 限制為特定節點
根據預設,DaemonSets 會在叢集中的所有節點上建立 Pod,但是使用節點選取器,您可以將 Pod 設定為只在特定節點中建立 Pod。 如果您想要將 DaemonSet 限制為特定節點,請使用 kubectl label
命令。
更新 DaemonSet
您可以使用 命令來更新 DaemonSet kubectl edit ds<NAME>
。 不過,建議您編輯原始組態檔,然後在最初建立時使用 kubectl apply
命令。 套用更新之後,您可以使用 命令來檢視更新狀態 kubectl rollout status ds <daemonset-name>
。
刪除 DaemonSet
若要移除 DaemonSet,請使用 kubectl delete
命令 (例如 , kubectl delete –f example-daemon.yaml -n monitoring
)。 指定 DaemonSet 檔案的名稱時,您應該小心謹慎,因為刪除 DaemonSet 會清除它部署的所有 Pod。