dameonset 重启_kubernetes系列教程(十二)详解DaemonSet控制器

视频

写在前面

上章节中介绍了Deployment,ReplicaSet,ReplicationController等副本

1. DaemonSet控制器

1.1 DaemonSet简介

介绍DaemonSet时我们先来思考一个问题:相信大家都接触过监控系统比如zabbix,监控系统需要在被监控机安装一个agent,安装agent通常会涉及到以下几个场景:

所有节点都必须安装agent以便采集监控数据新加入的节点需要配置agent,手动或者运行脚本节点下线后需要手动在监控系统中删除

kubernetes中经常涉及到在node上安装部署应用,它是如何解决上述的问题的呢?答案是DaemonSet。DaemonSet守护进程简称DS,适用于在所有节点或部分节点运行一个daemon守护进程,如监控我们安装部署时网络插件kube-flannel和kube-proxy,DaemonSet具有如下特点:

DaemonSet确保所有节点运行一个Pod副本指定节点运行一个Pod副本,通过标签选择器或者节点亲和性新增节点会自动在节点增加一个Pod移除节点时垃圾回收机制会自动清理Pod

DaemnonSet控制器

DaemonSet适用于每个node节点均需要部署一个守护进程的场景,常见的场景例如:

日志采集agent,如fluentd或logstash监控采集agent,如Prometheus Node Exporter,Sysdig Agent,Ganglia gmond分布式集群组件,如Ceph MON,Ceph OSD,glusterd,Hadoop Yarn NodeManager等k8s必要运行组件,如网络flannel,weave,calico,kube-proxy等

安装k8s时默认在kube-system命名空间已经安装了有两个DaemonSet,分别为kube-flannel-ds-amd64和kube-proxy,分别负责flannel overlay网络的互通和service代理的实现,可以通过如下命令查看:

1. 查看kube-system命令空间的DaemonSet列表,当前集群有三个node节点,所以每个DS会运行三个Pod副本

[root@node-1 ~]# kubectl get ds -n kube-system

NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE

kube-flannel-ds-amd64 3 3 3 3 3 beta.kubernetes.io/arch=amd64 46d

kube-proxy 3 3 3 3 3 beta.kubernetes.io/os=linux 46d

2. 查看Pod的副本情况,可以看到DaemonSet在每个节点都运行一个Pod

1.2 DaemonSet定义

DaemonSet的定义和Deployment定义使用相类似,需要定义apiVersion,Kind,metadata和spec属性信息,spec中不需要定义replicas个数,spec.template即定义DS生成容器的模版信息,如下是运行一个fluentd-elasticsearch镜像容器的daemon守护进程,运行在每个node上通过fluentd采集日志上报到ElasticSearch。

1. 通过yaml文件定义DaemonSet

[root@node-1 happylau]# cat fluentd-es-daemonset.yaml

apiVersion: apps/v1 #api版本信息

kind: DaemonSet #类型为DaemonSet

metadata: #元数据信息

name: fluentd-elasticsearch

namespace: kube-system #运行的命名空间

labels:

k8s-app: fluentd-logging

spec: #DS模版

selector:

matchLabels:

name: fluentd-elasticsearch

template:

metadata:

labels:

name: fluentd-elasticsearch

spec:

tolerations:

- key: node-role.kubernetes.io/master

effect: NoSchedule

containers: #容器信息

- name: fluentd-elasticsearch

image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2

resources: #resource资源

limits:

memory: 200Mi

requests:

cpu: 100m

memory: 200Mi

volumeMounts: #挂载存储,agent需要到这些目录采集日志

- name: varlog

mountPath: /var/log

- name: varlibdockercontainers

mountPath

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值