想学会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 的节点 。


推荐阅读