《Kubernetes设计与实现》
  • Introduction
  • 内容简介
  • 前言
  • [第二章:Kubernetes基础]
    • 2.3 Kubernetes API
  • [第三章:工作负载管理]
    • [3.1 Pod]
      • 3.1.1 Pod概述
      • 3.1.1 Pod初体验
    • [3.2 ReplicationController]
      • 3.2.1 ReplicationController概述
      • 3.2.2 ReplicationController初体验
    • [3.3 ReplicaSet]
      • 3.3.1 ReplicaSet概述
      • 3.3.2 ReplicaSet初体验
    • [3.4 Deployment]
      • 3.4.1 Deployment概述
      • 3.4.2 Deployment初体验
    • [3.5 DaemonSet]
      • 3.5.1 DaemonSet概述
      • 3.5.2 DaemonSet初体验
  • [第四章:服务]
    • [4.1 Service]
      • 4.1.1 Service概述
      • 4.1.1 Service上手体验
  • [第六章:配置管理]
    • [6.1 Secret--机密信息管理]
      • 6.1.1 Secret概述
  • [第七章:集群认证]
    • [7.1 证书]
      • 7.1.1 证书基础
      • 7.1.2 证书签发流程
  • [第九章:准入控制器]
    • [9.1 准入控制器概述]
      • 9.1.1 概述
      • [9.1.2 内置默认启动的插件]
        • 9.1.2.1 NamespaceLifecycle
        • 9.1.2.15 MutatingAdmissionWebhook
  • [第十章:ResourceQuota]
    • 10.1 ResourceQuota概述
  • [第十六章:API设计约定]
    • 16.1 字段可选性设计约定
    • 16.2 condition设计约定
    • 16.3 event设计约定
  • [第十九章:Kubernetes生态]
    • [19.1 Kind]
      • [19.1.1 Kind概述]
      • 19.1.2 映射端口到主机
      • 19.1.3 配置端口转发
由 GitBook 提供支持
在本页
  • 应用场景
  • 配置格式

这有帮助吗?

  1. [第三章:工作负载管理]
  2. [3.5 DaemonSet]

3.5.1 DaemonSet概述

上一页[3.5 DaemonSet]下一页3.5.2 DaemonSet初体验

最后更新于4年前

这有帮助吗?

DaemonSet是一种面向特定应用场景的Pod控制器,尽管它也可以管理Pod的多个副本,但它主要用于保证一个Node上只运行一个Pod的场景,如下图所示:

DaemonSet可以确保一个Node上最多只运行一个Pod副本,进一步说,DaemonSet可以选择特定类型的Node来部署Pod。此处,当选定类型的Node加入集群时,该Node会自动运行一个新的Pod副本,并且当该Node被删除时,相应的Pod也会被删除,而不会在其他Node上重建。

应用场景

DaemonSet可以确保每个工作节点上最多运行一个应用副本,这个应用副本类似于Linux操作系统中的daemon进程,这也正是DaemonSet名称的由来。

DaemonSet通常用于管理那些执行系统级的应用,比如:

  • 每个工作节点运行一个存储服务,供该工作节点上其他应用使用;

  • 每个工作节点运行一个日志收集服务,用于收集该节点上的运行日志;

  • 每个工作节点运行一个监控指标收集服务,用于提供该节点的监控信息;

配置格式

我们先看一个简单的DaemonSet配置:

apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: nginx-daemonset
  labels:
    app: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
        - name: nginx
          image: nginx:1.19.0

初步看,这份配置跟Deployment基本类似,唯一一个显著的差异是DaemonSet不需要指定副本数,因为它的副本数取决于工作节点数。

DaemonSet配置中spec.selector和spec.template作用我们已在介绍Deployment时介绍过,在此不再赘述。