Kubernetes Daemonset:实用指南

什么是Kubernetes Daemonset吗?

DaemonSet是一个Kubernetes特性,它允许您运行一个Kubernetes pod在满足特定条件的所有集群节点。每当一个新节点添加到集群中,添加了吊舱,当删除节点的集群,豆荚。当DaemonSet删除,Kubernetes删除所有创建的豆荚。

在Kubernetes架构中,DaemonSets用于跨集群部署后台服务,提供支持服务为每个node-such系统操作服务,收集日志,监控框架就像普罗米修斯和存储卷。

通常,一个DaemonSet部署一种守护进程pod在所有节点。但在更复杂的配置,你可以有几个daemonsets控制一种类型的守护进程,使用标签来定义每个节点部署规则。

这是我们有关的一系列文章的一部分Kubernetes自动定量

在本文中,您将学习:

DaemonSets如何工作?

DaemonSet是一个独立的对象都有自己的控制器。DaemonSet有理想状态舱需要运行在所有符合条件的节点(如果没有应用约束),或一组有限的节点(如果使用选择器)。DamonSet控制器使用和解循环检查节点的当前状态,如果他们不是当前运行所需的吊舱,它将运行它们。

DaemonSet控制器和解进程回顾现有节点和新创建的节点。默认情况下,Kubernetes调度程序忽略了创造的豆荚DamonSet,让他们存在于节点到节点本身是关闭。

另一个选择是限制守护程序将运行在节点,节点使用一个选择器。的nodeSelectorDaemonSet YAML文件中的字段允许您告诉DaemonSet控制器节点的部署守护进程。

如何执行常见DaemonSet操作吗

如何创建一个DaemonSet吗

您可以使用YAML文件来配置一个DaemonSet。看例子YAML文件

创建一个DaemonSet

这里有几个重要的部分DaemonSet配置:

元素 需要吗? 描述
apiVersion 是的 版本服务器所使用的API
是的 应该是DaemonSet
元数据 是的 DaemonSet的名称,名称空间应该运行,和标签可以帮助你找到并组织DaemonSet
spec.template 是的 这是一个圆荚体模板,它定义了pod你打算在所有合格的集群节点上运行
spec.selector 是的 一个圆荚体选择器由DaemonSet管理。必须是一个圆荚体中指定的标签模板。上面的例子表明,该选择器daemonset-container-a,这也是圆荚体中定义的模板。这个创建DaemonSet不得更改。
spec.template.spec.nodeSelector 没有 可以只运行的一些节点匹配选择器
spec.template.spec.affinity 没有 可以运行的节点匹配所需的亲和力
容器 没有 指定容器的形象应该运行在DaemonSet吊舱

DaemonSet豆荚尊重越来越难以和纵容像常规的豆荚,也有几个纵容自动添加;例如,DaemonSet豆荚不是预定的节点上没有准备好遥不可及的

当你完成了配置,使用下面的命令创建一个Daemonset (my-daemonset。yaml是您的配置文件):

kubectl应用- f my-daemonset.yaml

守护进程豆荚计划怎么样?

有两种方法来安排豆荚,应该每一个符合条件的节点上运行,作为DaemonSet的一部分:

  1. 使用DaemonSet控制器的默认选项。
  2. 使用默认的调度程序,通过支持ScheduleDaemonSetPods选择,设置NodeAffinityDaemonSet豆荚里的配置,而不是使用spec.nodeName

第一个选项是有问题的,因为它可能会导致不一致的仓行为,可以混淆集群管理员,因为:

  • DaemonSet豆荚没有的状态等待
  • 默认调度程序处理pod抢占,即使启用了抢占,调度决策由DaemonSet控制器不会考虑抢占和pod优先。

因此,建议使用第二个选择是创建DaemonSets默认调度器。这个选项可以确保:

  • 默认调度器结合DaemonSet豆荚目的主机。
  • 原始节点关联时是否考虑调度豆荚主机上运行
  • 没有变化的spec.template DaemonSet控制器。
  • 默认调度程序将不会安排任何节点标记为DaemonSet吊舱unschedulable所需的行为。

你如何规模DaemonSet吗?

通常,可伸缩性在Kubernetes通过扩展部署在特定的条件下。部署试图满足期望状态通过寻找合适的节点,和部署豆荚。或者,如果不再需要豆荚,终止它们。

从另一个角度DaemonSets方法可伸缩性。当你有一个后台服务等监控,你使用DaemonSet部署它,它会自动向上和向下扩展一起运行在集群节点的资格。

换句话说,DaemonSet后台服务战略是一个简单的可伸缩性。当多个符合条件的节点被添加到集群中,后台服务尺度。当删除节点时,它会自动缩小。

如何更新DaemonSets

可以通过改变更新DaemonSet下列之一:

  • 豆荚规范
  • 资源请求
  • 资源限制
  • 标签
  • 注释

在DaemonSet配置中,您可以选择两种更新策略:

  • RollingUpdate(默认)——配置变化,自动删除和重新创建DaemonSet吊舱。这意味着更改将自动触发重新部署。
  • OnDelete当配置发生了变化,Kubernetes不会自动删除DaemonSet豆荚和重新创建它们。你必须手动删除豆荚,控制器将创建一个新的pod反映更改。

如何更新进展,运行这个命令:my-daemonset kubectl启动状态

NetApp Kubernetes自动化基础设施与现货

从现货现货海洋NetApp释放DevOps团队从繁琐的管理节点集群的工人在帮助降低成本90%。现货海洋的自动优化提供了以下好处:

  • 容器驱动自动定量的豆荚最快的匹配适当的节点
  • 易于管理的工作负载与不同的资源需求在一个集群中
  • 智能装箱高度利用节点和更大的成本效益
  • 成本分配的名称空间、资源、注释和标签雷竞技rabet官网
  • 可靠的最优的混合使用,保留和按需计算定价模型
  • 自动化基础设施空间确保高可用性
  • 裁员基于实际资源消耗

了解更多关于现货的海洋今天!

Baidu
map