website/content/zh-cn/docs/tasks/manage-daemon/create-daemon-set.md

4.4 KiB
Raw Permalink Blame History

title content_type weight
构建一个基本的 DaemonSet task 5

本页演示如何构建一个基本的 {{< glossary_tooltip text="DaemonSet" term_id="daemonset" >}} 用其在 Kubernetes 集群中的每个节点上运行 Pod。 这个简单的使用场景包含了从主机挂载一个文件,使用 Init 容器记录文件的内容, 以及使用 pause 容器。

{{% heading "prerequisites" %}}

{{< include "task-tutorial-prereqs.md" >}}

为了演示 DaemonSet 的行为Kubernetes 集群至少需包含两个节点(一个控制平面节点和一个工作节点)。

定义 DaemonSet

在此任务中,将创建一个基本的 DaemonSet确保 Pod 的副本被调度到每个节点上。 此 Pod 将使用 Init 容器从主机读取并记录 /etc/machine-id 的内容, 而主容器将是一个 pause 容器,用于保持 Pod 运行。

{{% code_sample file="application/basic-daemonset.yaml" %}}

  1. 基于YAML清单创建 DaemonSet

    kubectl apply -f https://k8s.io/examples/application/basic-daemonset.yaml
    
  1. 完成创建操作后,你可以验证 DaemonSet 是否在集群中的每个节点上运行 Pod

    kubectl get pods -o wide
    

    输出将列出每个节点上有一个 Pod类似于

    NAME                                READY   STATUS    RESTARTS   AGE    IP       NODE
    example-daemonset-xxxxx             1/1     Running   0          5m     x.x.x.x  node-1
    example-daemonset-yyyyy             1/1     Running   0          5m     x.x.x.x  node-2
    
  1. 你可以通过检查从主机挂载的日志目录来查看 /etc/machine-id 文件的日志内容:

    kubectl exec <pod-name> -- cat /var/log/machine-id.log
    

    其中 <pod-name> 是某一个 Pod 的名称。

{{% heading "cleanup" %}}

要删除 DaemonSet请运行以下命令

kubectl delete --cascade=foreground --ignore-not-found --now daemonsets/example-daemonset

这个简单的 DaemonSet 例子介绍了 Init 容器和主机路径卷这类关键组件, 你可以在此基础上扩展以应对更高级的使用场景。有关细节参阅 DaemonSet

{{% heading "whatsnext" %}}