想学会K8S,DaemonSet很重要!值得收藏


想学会K8S,DaemonSet很重要!值得收藏

文章插图
【想学会K8S,DaemonSet很重要!值得收藏】今天分享一下【Kube.NETes】 DaemonSet 详解,丰富个人简历,提高面试level,给自己增加一点谈资,秒变面试小达人,BAT不是梦 。
三分钟你将学会:
  1. DaemonSet是什么?
  2. DaemonSet的应用场景
  3. DaemonSet 对象详解
  4. DaemonSet的常见问题及解决方案
一、介绍DaemonSet1、为什么需要DaemonSet在 Kubernetes 集群中,通常需要在每个节点上运行守护进程来监视节点健康状态、收集日志等,这些守护进程通常称为系统级守护进程,如 Kubernetes Cluster Autoscaler 和 Kubernetes DNS 。使用 Deployment 或 StatefulSet 可以创建 Pod,这些 Pod 可以被调度到任何节点上运行,但是在某些情况下,需要确保每个节点上都运行着一个 Pod 副本 版本,即需要使用 DaemonSet 。
2、DaemonSet 简介
想学会K8S,DaemonSet很重要!值得收藏

文章插图
DaemonSet 是 Kubernetes 中一种类型的控制器对象,用于在每个节点上运行一个 Pod 副本版本,确保每个节点上都有一个或多个 Pod 副本 。DaemonSet 控制器可以保证在新增节点时自动在新增的节点上创建 Pod 副本,同时在节点删除时,自动删除该节点上的 Pod 副本 。
3、DaemonSet 与其他 Kubernetes 对象的区别DaemonSet 在运行时,会在集群中的每个节点上创建一个 Pod 副本,而其他的控制器如 Deployment 和 StatefulSet 创建的 Pod,会尽可能地让它们在集群的不同节点上运行 。另外,DaemonSet 在节点加入和退出时,会自动处理 Pod 的创建和删除,因此可以保证在整个集群中的每个节点上都运行着一个 Pod 副本,适合用于运行集群服务的 daemon 容器或一些常驻内存的服务 。而 Deployment 和 StatefulSet 更适用于部署需要动态扩缩容的应用程序 。
想学会K8S,DaemonSet很重要!值得收藏

文章插图
对象类型
说明
控制器
Pods数量
Deployment
管理多个 ReplicaSets,用于应用程序的版本控制和滚动升级
控制器
可以控制多个Pods数量
StatefulSet
用于有状态应用程序,例如数据库,确保每个实例具有唯一的网络标识符和稳定的存储
控制器
可以控制多个Pods数量
DaemonSet
用于运行守护进程(如日志收集器),它会在每个工作节点上运行一个副本
控制器
等于节点数量
Job
用于批处理任务,例如数据转换或任务调度
无
一次性
CronJob
用于定期执行具有固定时间间隔的任务
无
可以控制多个Pods数量
二、创建DaemonSet1、使用 kubectl 命令创建 DaemonSet使用 kubectl 命令创建 DaemonSet 的步骤如下:
(1)使用以下命令创建 YAML 文件:
apiVersion: Apps/v1kind: DaemonSetmetadata:name: example-daemonsetlabels:app: examplespec:selector:matchLabels:app: exampletemplate:metadata:labels:app: examplespec:containers:- name: example-containerimage: Nginx在此示例中,我们创建了一个名为 "example-daemonset" 的 DaemonSet,并使用 Nginx 容器作为模板 。请注意,标签 "app: example" 在这里起到关键作用,因为它将用于选择要运行此 DaemonSet 的节点 。
(2)使用以下命令创建 DaemonSet:
kubectl create -f example-daemonset.yaml这将使用先前创建的 YAML 文件创建 DaemonSet 。您可以通过使用以下命令来验证是否已创建 DaemonSet:
kubectl get daemonsets如果您看到 "example-daemonset",则表示 DaemonSet 已成功创建 。
2、使用 YAML 文件创建DaemonSet要使用 YAML 文件创建 DaemonSet,请执行以下步骤:
(1)创建一个 YAML 文件并使用以下内容:
apiVersion: apps/v1kind: DaemonSetmetadata:name: example-daemonsetlabels:app: examplespec:selector:matchLabels:app: exampletemplate:metadata:labels:app: examplespec:containers:- name: example-containerimage: nginx在此示例中,我们创建了一个名为 "example-daemonset" 的 DaemonSet,并使用 Nginx 容器作为模板 。请注意,标签 "app: example" 在这里起到关键作用,因为它将用于选择要运行此 DaemonSet 的节点 。


推荐阅读