Kubernetes的资源控制器Daemonset详解与示例

主机配置规划

服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟)
k8s-master CentOS7.7 2C/4G/20G 172.16.1.110 10.0.0.110
k8s-node01 CentOS7.7 2C/4G/20G 172.16.1.111 10.0.0.111
k8s-node02 CentOS7.7 2C/4G/20G 172.16.1.112 10.0.0.112

什么是控制器

kubernetes中内建了很多controller(控制器),这些相当于一个状态机,用来控制pod的具体状态和行为。

部分控制器类型如下:
  • ReplicationController 和 ReplicaSet
  • Deployment
  • DaemonSet
  • StatefulSet
  • Job/CronJob
  • HorizontalPodAutoscaler

DaemonSet

DaemonSet 确保全部(或者某些)节点上运行一个 Pod 的副本。当有节点加入集群时,会为他们新增一个 Pod。当有节点从集群移除时,这些 Pod 也会被回收。删除 DaemonSet 将会删除它创建的所有 Pod。

DaemonSet 的一些典型用法:
  • 在每个节点上运行集群存储 DaemonSet,例如 glusterd、ceph。
  • 在每个节点上运行日志收集 DaemonSet,例如 fluentd、logstash。
  • 在每个节点上运行监控 DaemonSet,例如 Prometheus Node Exporter、Flowmill、Sysdig 代理、collectd、Dynatrace OneAgent、AppDynamics 代理、Datadog 代理、New Relic 代理、Ganglia gmond 或者 Instana 代理。

一个简单的用法是在所有的节点上都启动一个 DaemonSet,并作为每种类型的 daemon 使用。

一个稍微复杂的用法是单独对每种 daemon 类型使用一种DaemonSet。这样有多个 DaemonSet,但具有不同的标识,并且对不同硬件类型具有不同的内存、CPU 要求。

备注:DaemonSet 中的 Pod 可以使用 hostPort,从而可以通过节点 IP 访问到 Pod;因为DaemonSet模式下Pod不会被调度到其他节点。使用示例如下:

  1. ports:
  2. - name: httpd
  3. containerPort:
  4. #除非绝对必要,否则不要为 Pod 指定 hostPort。 将 Pod 绑定到hostPort时,它会限制 Pod 可以调度的位置数;DaemonSet除外
  5. #一般情况下 containerPort与hostPort值相同
  6. hostPort: #可以通过宿主机+hostPort的方式访问该Pod。例如:pod在/调度到了k8s-node02【172.16.1.112】,那么该Pod可以通过172.16.1.:8090方式进行访问。
  7. protocol: TCP

可参见:「Kubernetes K8S之通过yaml创建pod与pod文件常用字段详解

DaemonSet示例

yaml文件

  1. [root@k8s-master controller]# pwd
  2. /root/k8s_practice/controller
  3. [root@k8s-master controller]# cat daemonset.yaml
  4. apiVersion: apps/v1
  5. kind: DaemonSet
  6. metadata:
  7. name: fluentd-elasticsearch
  8. namespace: default
  9. labels:
  10. k8s-app: fluentd-logging
  11. spec:
  12. selector:
  13. matchLabels:
  14. name: fluentd-elasticsearch
  15. template:
  16. metadata:
  17. labels:
  18. name: fluentd-elasticsearch
  19. spec:
  20. tolerations:
  21. # 允许在master节点运行
  22. - key: node-role.kubernetes.io/master
  23. effect: NoSchedule
  24. containers:
  25. - name: fluentd-elasticsearch
  26. image: registry.cn-beijing.aliyuncs.com/google_registry/fluentd:v2.5.2
  27. resources:
  28. limits:
  29. cpu:
  30. memory: 200Mi
  31. requests:
  32. cpu: 100m
  33. memory: 200Mi
  34. volumeMounts:
  35. - name: varlog
  36. mountPath: /var/log
  37. - name: varlibdockercontainers
  38. mountPath: /var/lib/docker/containers
  39. readOnly: true
  40. # 优雅关闭应用,时间设置。超过该时间会强制关闭【可选项】,默认30秒
  41. terminationGracePeriodSeconds:
  42. volumes:
  43. - name: varlog
  44. hostPath:
  45. path: /var/log
  46. - name: varlibdockercontainers
  47. hostPath:
  48. path: /var/lib/docker/containers

运行daemonset,并查看状态

  1. [root@k8s-master controller]# kubectl apply -f daemonset.yaml
  2. daemonset.apps/fluentd-elasticsearch created
  3. [root@k8s-master controller]#
  4. [root@k8s-master controller]# kubectl get daemonset -o wide
  5. NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE CONTAINERS IMAGES SELECTOR
  6. fluentd-elasticsearch <none> 92s fluentd-elasticsearch registry.cn-beijing.aliyuncs.com/google_registry/fluentd:v2.5.2 name=fluentd-elasticsearch
  7. [root@k8s-master controller]#
  8. [root@k8s-master controller]# kubectl get pod -o wide
  9. NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
  10. fluentd-elasticsearch-52b8z / Running 95s 10.244.2.92 k8s-node02 <none> <none>
  11. fluentd-elasticsearch-fps95 / Running 95s 10.244.0.46 k8s-master <none> <none>
  12. fluentd-elasticsearch-pz8j7 / Running 95s 10.244.4.83 k8s-node01 <none> <none>

由上可见,在k8s集群所有节点包括master节点都运行了daemonset的pod。

相关阅读

1、Kubernetes K8S之通过yaml创建pod与pod文件常用字段详解

2、Kubernetes K8S之资源控制器RC、RS、Deployment详解

3、Kubernetes K8S之资源控制器StatefulSets详解

完毕!


———END———
如果觉得不错就关注下呗 (-^O^-) !

Kubernetes K8S之资源控制器Daemonset详解的更多相关文章

  1. Kubernetes K8S之资源控制器StatefulSets详解

    Kubernetes的资源控制器StatefulSet详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...

  2. Kubernetes K8S之资源控制器Job和CronJob详解

    Kubernetes的资源控制器Job和CronJob详解与示例 主机配置规划 服务器名称(hostname) 系统版本 配置 内网IP 外网IP(模拟) k8s-master CentOS7.7 2 ...

  3. kubernetes运行应用2之DaemonSet详解

    kubernetes运行应用1之Deployment详解   查看daemonset 如下,k8s自身的 DaemonSet kube-flannel-ds和kube-proxy分别负责在每个结点上运 ...

  4. Kubernetes K8S之资源控制器RC、RS、Deployment详解

    Kubernetes的资源控制器ReplicationController(RC).ReplicaSet(RS).Deployment(Deploy)详解与示例 主机配置规划 服务器名称(hostna ...

  5. Kubernetes K8S之鉴权RBAC详解

    Kubernetes K8S之鉴权概述与RBAC详解 K8S认证与授权 认证「Authentication」 认证有如下几种方式: 1.HTTP Token认证:通过一个Token来识别合法用户. H ...

  6. Kubernetes K8S之调度器kube-scheduler详解

    Kubernetes K8S之调度器kube-scheduler概述与详解 kube-scheduler调度概述 在 Kubernetes 中,调度是指将 Pod 放置到合适的 Node 节点上,然后 ...

  7. Docker Kubernetes Service 网络服务代理模式详解

    Docker Kubernetes  Service 网络服务代理模式详解 Service service是实现kubernetes网络通信的一个服务 主要功能:负载均衡.网络规则分布到具体pod 注 ...

  8. 小甲鱼PE详解之资源(PE详解11)

    原文出自:www.fishc.com 最近一直在安排第一届鱼C 学习班的事情,忙活了好一阵子,真是对不住大家,还大家久等了,这里要跟大家说声不好意思 ^_^ 今天我们来谈谈资源部分,资源部分可以说是 ...

  9. k8s学习-资源控制器

    4.3.资源控制器 4.3.1.概念 Kubernetes中内建了很多种controller(控制器),这些相当于一个状态机,用来控制Pod的具体状态和行为. 4.3.2.分类 Replication ...

随机推荐

  1. OpenVINO学习系列1

    OpenVINO介绍 OpenVINO是英特尔推出一套基于深度学习的计算机视觉加速优化框架,支持其它机器学习平台模型的压缩优化.加速计算等功能. 自发布以后就得到开发者的青睐,其强大的模型优化与压缩能 ...

  2. Linux常用命令之cp、mv、rm、cat、more、head、tail、ln命令讲解

    上一章节中,我们了解到了Linux系统的最基础的几个文件处理命令,核心的是ls命令,在今天这章中,我们来继续学习Linux对于文件操作相关的一些命令,比如复制.移动.删除.查看等命令. 1.cp 命令 ...

  3. Qt自定义控件之仪表盘3--雷达扫描图

    1.设计思想 雷达扫描图,在影视作品中见到较多,比如飞机雷达.舰艇雷达,有一个扫描线转圈代表雷达一周旋转或一个批次的收发,发现目标就在表盘上标记位置.和汽车仪表盘类似,汽车仪表盘有底盘背景图.同圆.刻 ...

  4. CI4框架应用二 - 项目目录

    我们之前搭建好了CI4的开发环境,下面我们来看一下CI4的目录结构. Administrator@PC- MINGW64 /c/wamp64/www/ci4 $ ls -l total drwxr-x ...

  5. Java实现短信验证码

    前言 本人使用的是阿里短信服务,一开始尝试了许多不同的第三方短信服务平台,比如秒滴科技.梦网云通讯.当初开始为什么会选择这两个,首先因为,他们注册就送10元钱(#^.^#),但是后来却发现他们都需要认 ...

  6. Linux学习笔记之linux的文件目录结构

    Linux环境下,一切皆文件! linux和windows系统有区别, windows是在各个硬盘上进行分区,分区里面又有好多文件, 而linux是采用树状的目录结构,所有都在根目录  /  下,所有 ...

  7. C#LeetCode刷题-双指针

    双指针篇 # 题名 刷题 通过率 难度 3 无重复字符的最长子串   24.5% 中等 11 盛最多水的容器   43.5% 中等 15 三数之和   16.1% 中等 16 最接近的三数之和   3 ...

  8. C#算法设计查找篇之04-斐波那契查找

    斐波那契查找(Fibonacci Search) 该文章的最新版本已迁移至个人博客[比特飞],单击链接 https://www.byteflying.com/archives/704 访问. 斐波那契 ...

  9. servlet的生命周期和工作原理介绍

    一.servlet生命周期 Servlet生命周期分为三个阶段: 1)初始化阶段: 调用init()方法 2)响应客户请求阶段:调用service()方法 3)终止阶段:调用destroy()方法 T ...

  10. markdown插入表情

    找到了一个网站https://www.webfx.com/tools/emoji-cheat-sheet/,直接把表情对应的符号复制粘贴就行了. 比如:joy:显示为 部分截图: