共用方式為


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

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

雖然 DaemonSet 預設會在每個節點上建立 Pod,但您可以藉由預先定義 YAML 檔案中的節點選取器欄位來限制可接受的節點數目。 DaemonSet 控制器只會在符合節點選取器的節點上建立 Pod。

通常,一個 DaemonSet 會在所有節點上部署一個背景程式類型,但是可以使用不同的標籤,讓多個 Daemonset 控制項成為一個背景程式類型。 Kubernetes 標籤會根據個別節點的特性來指定部署規則。

如需如何使用 DaemonSets 的詳細資訊,請參閱 Kubernetes DaemonSets

建立 DaemonSet

您可以使用 YAML 檔案來描述 DaemonSet,然後使用 kubectl createkubectl 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。

後續步驟