Files
kuboard-press/learning/k8s-intermediate/workload/wl-daemonset/alternative.md
huanqing.shao 1b69a42777 vssue
2019-09-22 21:56:32 +08:00

2.1 KiB
Raw Blame History

vssueId, layout, description
vssueId layout description
51 LearningLayout 本文描述了 Kubernetes DaemonSet 的概念、行为及用法

DaemonSet 的替代选项

参考文档: Kubernetes 官网文档 Alternatives to DaemonSet

DaemonSet 有如下替代选项可以选择

Init Scripts

您可以通过脚本(例如,initupstartdsystemd直接在节点上启动一个守护进程。相对而言DaemonSet 在处理守护进程时,有如下优势:

  • 使用与应用程序相同的方式处理守护进程的日志和监控
  • 使用与应用程序相同的配置语言和工具例如Pod template、kubectl处理守护进程
  • 在容器中运行守护进程,可为守护进程增加 resource limits 等限定

Pods

您可以直接创建 Pod并指定其在某一个节点上运行。相对而言使用 DaemonSet 可获得如下优势:

  • Pod 终止后DaemonSet 可以立刻新建 Pod 以顶替已终止的 Pod。Pod 终止的原因可能是:
    • 节点故障
    • 节点停机维护

静态 Pod

您可以在 Kubelet 监听的目录下创建一个 Pod 的 yaml 文件,这种形式的 Pod 叫做 静态 Podstatic pod。与 DaemonSet 不同,静态 Pod 不能通过 kubectl 或者 Kuboard 进行管理。静态 Pod 不依赖 Kubernetes APIServer 的特点,使得它在引导集群启动的过程中非常有用。

::: warning 静态 Pod 将来可能被不推荐使用 deprecated :::

Deployment

DaemonSet 和 Deployment 一样,他们都创建长时间运行的 Pod例如 web server、storage server 等)

  • Deployment 适用于无状态服务例如前端程序对于这些程序而言扩容scale up/ 缩容scale down、滚动更新等特性比精确控制 Pod 所运行的节点更重要。

  • DaemonSet 更适合如下情况:

    • Pod 的副本总是在所有(或者部分指定的)节点上运行
    • 需要在其他 Pod 启动之前运行