第十四篇:Kubernetes资源调度 DeamonSet

89 阅读1分钟

注明:当前文档内容来源于51cto课堂‘宽哥’杜宽学习课程。

一、什么是DeamonSet

DaemonSet(守护进程集,缩写为ds)和守护进程类似,它在符合匹配条件的节点上均部署一个Pod。当有新节点加入集群时,也会为它们新增一个Pod,当节点从集群中移除时,这些Pod也会被回收,删除DaemonSet将会删除它创建的所有Pod

例:

1.运行集群存储daemon(守护进程),例如在每个节点上运行Glusterd、Ceph等;

2.在每个节点上运行日志收集Daemon,例如Fluentd、Logstash;

3.在每个节点运行监控daemon,比如Prometheus NodeExporter、Collectd、Datadog代理、NewRelic代理或Ganglia gmond

二、创建一个基础DeamonSet

apiVersion: apps/v1
kind: DaemonSet
metadata:
  labels:
    app: nginx
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers: 
      - image: nginx:1.15.12
        imagePullPolicy: IfNotPresent
        name: nginx

必须字段:和其他所有Kubernetes 配置一样,DaemonSet需要apiVersion、kind和metadata字段,同时也需要一个.spec 配置段。

Pod模板:.spec唯一需要的字段是.spec.template。.spec.template是一个Pod模板,他与Pod具有相同的配置方式,但它不具有apiVersion和Kind字段

Pod Selector: .spec.selector 字段表示Pod Selector,它与其他资源的.spec.selector的作用相同。.spec.selector表示一个对象,它由如下两个字段组成

指定节点部署Pod:如果指定.spec.template.spec.nodeSelector,DaemonSet Controller将在与Node Selector(节点选择器)匹配的 节点上创建pod,比如部署在磁盘类型为ssd的节点上(需要提前给节点定义标签Label)

nodeSelector:
  disktype: ssd