共用方式為


建立 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,以執行維護工作,並將服務支援至每個節點:

  • 執行記錄收集精靈,例如 FluentdLogstash
  • 執行節點監視精靈,例如 Prometheus
  • 執行叢集記憶體精靈,例如 glusterdceph

雖然 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。

下一步