创建 Kubernetes DaemonSets
适用于:Azure Stack HCI 22H2 上的 AKS、Windows Server 上的 AKS
本文介绍如何在 Azure Arc 启用的 AKS 中创建和使用 Kubernetes DaemonSet ,以确保 Pod 的副本始终在群集中的每个工作器节点上可用。 可以使用 DaemonSet 来确保应用在所有工作器节点上运行,以及部署执行维护并为节点提供服务的 Pod 来提高群集性能。
DaemonSets 概述
DaemonSet 是一个 Kubernetes 对象,可确保配置中定义的 Pod 的副本始终在群集中的每个工作器节点上可用。 将新节点添加到群集时,DaemonSet 会自动分配该节点上的 Pod。
同样,删除某个节点时,节点上运行的 Pod 也会被删除,并且不会在另一个节点上重新计划(例如,与 ReplicaSets 一样)。 这使你能够克服 Kubernetes 计划限制,并确保特定应用程序部署在群集中的所有节点上。
DaemonSet 可提高整体群集性能。 例如,可使用它们来部署 Pod,以执行维护任务,并针对每个节点提供支持服务:
- 运行日志收集守护程序,例如
Fluentd
和Logstash
。 - 运行节点监视守护程序,例如
Prometheus
。 - 运行群集存储守护程序,例如
glusterd
或ceph
。
尽管 DaemonSet 默认在每个节点上创建 Pod,但可通过在 YAML 文件中预定义节点选择器字段来限制可接受节点的数量。 DaemonSet 控制器仅在与节点选择器匹配的节点上创建 Pod。
通常,一个 DaemonSet 可跨所有节点部署一个守护程序类型,但可能有多个 DaemonSet 使用不同的标签控制一个守护程序类型。 Kubernetes 标签根据各个节点的特征指定部署规则。
有关如何使用 DaemonSet 的详细信息,请参阅 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 限制为特定节点
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。