Kubernetes 守护进程(如何创建守护进程?)17

作者 : 慕源网 本文共2254个字,预计阅读时间需要6分钟 发布时间: 2021-11-28 共237人阅读

本文是Kubernetes权威指南系列的一部分,你可以点击Kubernetes权威指南查看所有教程

Kubernetes 守护进程(如何创建守护进程?)17

Kubernetes Daemonset 的定义

Kubernateshas 有多种选项和部署方法来执行容器。Daemonset 就是其中之一。kubernetes Daemonset 是一种容器工具,用于检查所有节点及其子集是否在 pod 的一个副本上执行。Daemonsets 可以在可以添加到集群的新节点上开发 pod。在暗示 Kubernetes 时,他们中的大多数都没有考虑 Pod 的执行。但有时,用户希望在所有节点上执行单个 pod。如果用户想在所有节点上执行fluentd来收集日志,他使用Daemonset隐含地与kubernetes联系,以确保pods的实例在集群的节点中。

什么是 Kubernetes Daemonset?

Daemonset 通常使用 YAML 文件进行解释,YAML 文件中的组件为用户提供了对 pod 部署过程的额外控制。Pod 是部署在 Kubernetes 中的简单对象,它表示集群中可执行进程的单个实例。Pod 包含一个或多个作为单一资源管理的容器。
Daemonset 是 kubernetes 中的动态对象,由控制器管理。用户可以设置代表每个节点上需要存在的特定 pod 的所需状态。控制回路中的折衷可以将当前实际状态与期望状态进行比较。如果实际节点不适合匹配的 Pod,则 Daemonset 的控制器会自动创建一个新节点。此自动化过程包含所有最近创建的节点和现有节点。Daemonset 的控制器开发的 Pod 被 Kubernetes 调度器忽略,并作为同一个节点本身出现。

Daemonset 的用例是什么?

Daemonset 的用例如下,

要在每个节点上执行用于存储集群的守护程序,请使用:-glusterd-ceph。
要在每个节点上执行收集日志的守护进程,请使用:fluentd-logstash。
要执行监控每个节点上的节点的守护进程,请使用:-collectd、-datadog 代理作为 Prometheus 节点导出器。
由于用例很复杂,用户可以通过各种标志、CPU 请求和不同类型硬件的内存单元为典型类型部署许多可能的 Daemonset。

Daemonset 可以通过 pod 部署来提升集群的性能,为每个节点执行维护活动和支持服务。Kubernetes 中的监控应用程序和其他服务等后台进程必须与集群一起存在,以提供及时和相关的服务。

它主要适用于长时间运行的服务,如日志收集、节点资源监控、集群存储以及与基础设施相关的 Pod。Daemonset 在集群中的所有节点上运行单个守护进程是标准的。多个 Daemonset 可以通过应用不同的标签来管理一种类型的 Daemonset。该标签可以根据各个节点的行为识别部署中的规则。Daemonsets 部署在后台任务上,用户可以在所有可能的节点上执行这些任务,但不需要任何干预。用户可以拥有用于在所有节点上执行的每种类型的守护程序的守护程序集。用户还可以为每个单一的守护进程类型执行多个守护进程。但是可以针对不同的硬件模型和资源需求使用不同的配置。

如何创建守护进程?

Kubernetes 守护进程(如何创建守护进程?)17

  • 要创建 Daemonset,涉及以下步骤。
  • Daemonset 是在一个包含几个部分的 YAML 文件中开发的。
  • 它需要 apiVersion
  • 它需要 Daemonset 的行为类型或种类
  • 它需要 Daemonset 的元数据
  • 它需要用户需要在所有节点上执行的 pod 定义的 spec_template。
  • 它需要 spec_selector 来管理 Daemonset 的 pod,这种类型必须在 pod 模板中特定于标签。模板中定义的选择器名称应用于选择器。但是一旦创建了 Daemonset,这个名称就不能更改,而不会离开 Daemonset 中之前创建的 pod。
  • spec_template-spec-node 选择器用于仅执行适合选择器的节点子集
  • Spec-template-spec-affinity 用于在具有亲和性匹配的节点子集上执行。
  • 配置完成后,在集群中创建Daemonset。

与 Pod 通信的方法 Kubernetes Daemonset

用户可以将数据从其他 pod 传输到节点上执行的 Daemonset 的 pod。用户可以通过两种方式将数据指标传输到 pod 监控,

Daemonset 中的 pod 规范具有指定的主机端口以在节点上发现它。然后它可以直接与在其上执行的节点的 IP 交互。

使用相同的 pod 选择器,将服务创建为 Daemonset,然后使用它来访问 Daemonset。该服务的局限性在于 Pod 的 Daemonset 是随机接收请求的。这意味着请求可能会通过网络传递,而不是挂在与请求的 Pod 类似的 Pod 上。

通信守护进程 Pod 的可能模式是推送、具有已知端口的 nodeIP、DNS 和服务。
在推送中,放置在 Daemonset 中的 pod 被定制为将更新传输到其他服务,如 stats 数据库,并且它们没有客户端。

在具有已知端口的 NodeIP 中,Daemonset Pod 使用主机端口,因此 Pod 通过节点 IP 连接。客户端了解使用 nodeIP 列表,也了解端口约定。

DNS 开发无头服务并使用端点探索 Daemonset 从 DNS 检索报告

在服务中,它使用类似的 pod 选择器创建服务,并使用它来访问随机节点的守护进程。

结论

因此,Daemonset 的功能用于检查在每个可用节点上执行和调度的 Pod 很少还是全部。它在所有节点中执行所需 pod 的副本。所以当一个新的节点加入到 Kubernetes 的集群中时,新的 pod 会被添加到最近附加的节点上。


慕源网 » Kubernetes 守护进程(如何创建守护进程?)17

常见问题FAQ

程序仅供学习研究,请勿用于非法用途,不得违反国家法律,否则后果自负,一切法律责任与本站无关。
请仔细阅读以上条款再购买,拍下即代表同意条款并遵守约定,谢谢大家支持理解!

发表评论

开通VIP 享更多特权,建议使用QQ登录