创建 Kubernetes DaemonSets

适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS

本文介绍如何在 Azure Arc 启用的 AKS 中创建和使用 Kubernetes DaemonSet ,以确保 Pod 副本在群集中的每个工作器节点上始终可用。 可以使用 DaemonSet 通过确保应用在所有工作器节点上运行来提高群集性能,并部署执行维护并为节点提供支持服务的 Pod。

DaemonSet 概述

DaemonSet 是一个 Kubernetes 对象,可确保配置中定义的 Pod 副本始终在群集中的每个工作器节点上可用。 将新节点添加到群集时,DaemonSet 会自动分配该节点上的 Pod。

同样,删除节点时,节点上运行的 Pod 也会被删除,并且不会在另一个节点上重新计划 (,例如, 副本集) 。 这使你能够克服 Kubernetes 计划限制,并确保在群集中的所有节点上部署特定的应用程序。

DaemonSet 可提高整体群集性能。 例如,可使用它们来部署 Pod,以执行维护任务,并针对每个节点提供支持服务:

  • 运行日志收集守护程序,例如 FluentdLogstash
  • 运行节点监视守护程序,例如 Prometheus
  • 运行群集存储守护程序,例如 glusterdceph

尽管 DaemonSet 默认在每个节点上创建 Pod,但可通过在 YAML 文件中预定义节点选择器字段来限制可接受节点的数量。 DaemonSet 控制器仅在与节点选择器匹配的节点上创建 Pod。

通常,一个 DaemonSet 可跨所有节点部署一个守护程序类型,但可能有多个 DaemonSet 使用不同的标签控制一个守护程序类型。 Kubernetes 标签根据各个节点的特征指定部署规则。

有关如何使用 DaemonSet 的详细信息,请参阅 Kubernetes DaemonSets

创建 DaemonSet

通过使用 YAML 文件描述 DaemonSet,然后使用 kubectl createkubectl apply 命令(例如 kubectl create –f example-daemon.yaml)创建它。

以下示例介绍了使用 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。

后续步骤