tnblog
首页
视频
资源
登录

Kubernetes DaemonSet讲解

7467人阅读 2021/3/4 10:00 总访问:3470881 评论:0 收藏:0 手机
分类: 容器编排

Kubernetes

Kubernetes DaemonSet讲解

需求来源

背景问题


我们可以让每个集群内的节点都运行一个相同的Pod吗?

如果这样做,以下的问题有什么方式来解决:

1. 我们如何保证每个节点都运行一个Pod?
2. 如果新节点加入集群,如何感知并部署对应的Pod?
3. 如果有节点退出,如何删除对应的Pod?
4. 如果Pod状态异常,如何监控并恢复Pod的状态?

DaemonSet 守护进程控制器


DaemonSet 能帮助我们做什么事情?

1. 保证集群内每一个(或一些节点)都运行一组相同的Pod
2. 跟踪集群节点状态,保证新加入的节点自动创建对应的Pod
3. 跟踪集群节点状态,保证移除的节点删除对应的Pod
4. 跟踪Pod状态,保证每个节点Pod处于运行状态

用例解读

DaemonSet 语法


适用场景:

1. 集群存储进程:glusterd,ceph
2. 日志收集进程:fluentd,logstash
3. 需要在每个节点运行的监控收集器

DaemonSet-Demo.yaml

  1. apiVersion: apps/v1
  2. kind: DaemonSet
  3. metadata:
  4. name: fluentd-elasticsearch
  5. labels:
  6. k8s-app: fluentd-logging
  7. spec:
  8. selector:
  9. matchLabels:
  10. name: fluentd-elasticsearch
  11. template:
  12. metadata:
  13. labels:
  14. name: fluentd-elasticsearch
  15. spec:
  16. tolerations:
  17. - key: node-role.kubernetes.io/master
  18. effect: NoSchedule
  19. containers:
  20. - name: fluentd-elasticsearch
  21. image: quay.io/fluentd_elasticsearch/fluentd:v2.5.2
  22. resources:
  23. limits:
  24. memory: 200Mi
  25. requests:
  26. cpu: 100m
  27. memory: 200Mi
  28. volumeMounts:
  29. - name: varlog
  30. mountPath: /var/log
  31. - name: varlibdockercontainers
  32. mountPath: /var/lib/docker/containers
  33. readOnly: true
  34. terminationGracePeriodSeconds: 30
  35. volumes:
  36. - name: varlog
  37. hostPath:
  38. path: /var/log
  39. - name: varlibdockercontainers
  40. hostPath:
  41. path: /var/lib/docker/containers

查看DaemonSet状态

  1. # kubectl get ds
  2. NAME DESIRED CURRENT READY UP-TO-DATE AVAILABLE NODE SELECTOR AGE
  3. fluentd-elasticsearch 1 1 1 1 1 <none> 13s
  4. # kubectl get pods
  5. NAME READY STATUS RESTARTS AGE
  6. fluentd-elasticsearch-b2t7l 1/1 Running 0 19s


状态描述:(本集群公有一个节点[所以大家可以多弄几个节点])

- DESIRED: 需要的Pod个数
- UP-TO-DATE: 最新创建的个数
- CURRENT: 当前已存在的pod个数
- AVAILABLE: 可用pod个数
- READY: 就绪的个数
- NODE SELECTOR: 节点选择标签

更新DaemonSet


更新策略:

1. RollingUpdate: DaemonSet默认更新策略,当更新DaemonSet模板后,老的Pod会被先删除,然后再去创建新的Pod,可以配合健康检查做滚动更新。
2. OnDelete: 当DaemonSet模板更新后,只有手动的删除某一个对应的Pod,此节点Pod才会被更新。

  1. # 更新镜像
  2. # kubectl set image ds/fluentd-elasticsearch fluentd-elasticsearch=fluent/fluentd:v1.4
  3. daemonset.extensions/fluentd-elasticsearch image updated
  4. # kubectl rollout status ds/fluentd-elasticsearch
  5. Waiting for daemon set "fluentd-elasticsearch" rollout to finish: 0 out of 1 new pods have been updated...
  6. Waiting for daemon set "fluentd-elasticsearch" rollout to finish: 0 of 1 updated pods are available...
  7. daemon set "fluentd-elasticsearch" successfully rolled out

架构设计


1. DaemonSet Controller 负责根据配置创建Pod
2. DaemonSet Controller 跟踪Job状态,更加配置及时重试Pod或者继续创建
3. DaemonSet Controller 会自动添加affinity & label来跟踪对应的pod,并根据配置在每个节点或者适合的部分节点创建Pod


欢迎加群讨论技术,1群:677373950(满了,可以加,但通过不了),2群:656732739

评价

oracle数据库表dual的讲解

我希望有个如你一般的人我还是很喜欢你,像日光洒满天地,温柔惬意。先提个问 :oracle数据库里dual表是什么表?这几天在使...

kubernetes Job讲解

kubernetes Job讲解[TOC] 需求来源Job 背景问题我们可以通过Pod来直接运行任务进程吗?这样做将会产生以下几种问题:1. 我...

VLAN接口类型讲解

VLAN接口类型讲解[TOC] VLAN简介VLAN(Virtual Local Area Network)即虚拟局域网,是将一个物理的LAN在逻辑上划分成多个...

大白话讲解Promise(一)

原文连接:https://www.cnblogs.com/lvdabao/p/es6-promise-1.html author:吕大豹 2015年, ES2015正式发布(也就是ES6,E...

net core 使用 EF Code First

下面这些内容很老了看这篇:https://www.tnblog.net/aojiancc2/article/details/5365 项目使用多层,把数据库访问...

cAPS.net 保存base64位格式的图片

publicvoidUpload() { //取出图片对应的base64位字符 stringimgBase=Request[&quot;imgBase&quot;]; //c#里边的base6...

Quartz.net实例动态改变周期调度。misfire、Cron

Quartz:Java编写的开源的任务调度作业框架 类似Timer之类定时执行的功能,但是更强大Quartz.NET:是把Quartz转成C# NuGet...

.net Windows服务发布、安装、卸载、监听脚本。服务调试

一、脚本 为方便不用每次都去写安装卸载的脚本1.安装脚本@echooff @echo开始安装【服务】 %SystemRoot%\Microsoft.NET\Fr...

c、VB.net中全角半角转换方法

///&lt;summary&gt; ///转全角的函数(SBCcase) ///&lt;/summary&gt; ///&lt;paramname=&quot;input&quot;&gt;任意字符串...

.net mvc分部页,.net core分部页

.net分部页的三种方式第一种:@Html.Partial(&quot;_分部页&quot;)第二种:@{ Html.RenderPartial(&quot;分部页&quot;);}...

C.net 配合小程序实现经过第三方服务器中转文件

某些时候,微信小程序前段上传文件的时候需要经过第三方服务器再将文件上传到客户的服务器;操作如下:1:(小程序内向中端服...

.net实现QQ邮箱发送邮件功能

1、微软已经帮我们封装好了发送邮件的类MailMessage,MailMessage类构造一些邮件信息,然后通过SmtpClient进行邮件发送。Mai...

StackExchange.Redis操作redis(net core支持)

官方git开源地址https://github.com/StackExchange/StackExchange.Redis官方文档在docs里边都是官方的文档通过nuget命令下...

windows 自带的netsh进行端口映射

使用netsh 把本地任意ip的25566端口 映射到192.168.81.234的25565端口netshinterfaceportproxyaddv4tov4listenaddress=0.0....

确保.net程序始终以管理员身份运行

usingSystem; usingSystem.Collections.Generic; usingSystem.Linq; usingSystem.Text; usingSystem.Threading.Tasks; ...
这一世以无限游戏为使命!
排名
2
文章
635
粉丝
44
评论
93
docker中Sware集群与service
尘叶心繁 : 想学呀!我教你呀
一个bug让程序员走上法庭 索赔金额达400亿日元
叼着奶瓶逛酒吧 : 所以说做程序员也要懂点法律知识
.net core 塑形资源
剑轩 : 收藏收藏
映射AutoMapper
剑轩 : 好是好,这个对效率影响大不大哇,效率高不高
ASP.NET Core 服务注册生命周期
剑轩 : http://www.tnblog.net/aojiancc2/article/details/167
ICP备案 :渝ICP备18016597号-1
网站信息:2018-2025TNBLOG.NET
技术交流:群号656732739
联系我们:contact@tnblog.net
公网安备:50010702506256
欢迎加群交流技术