k8s学习(十一)创建DaemonSet

2023-11-03


前言

DaemonSet 保证在每个 Node 上都运行一个容器副本,常用来部署一些集群的日志、监 控或者其他系统管理应用。

应用场景:

    在每个节点上运行集群的存储守护进程,例如kube-proxy,、kube-dns、glusterd、ceph

    在每个节点上运行日志收集守护进程,例如 fluentd、logstash

    在每个节点上运行监控守护进程,例如 Prometheus Node Exporter (opens new window)、Sysdig Agent (opens new window)、collectd、Dynatrace OneAgent (opens new window)、APPDynamics Agent (opens new window)、Datadog agent (opens new window)、New Relic agent (opens new window)、Ganglia gmond、Instana Agent (opens new window)等


一、下载 fluentd-elasticsearch

(1)查询 fluentd-elasticsearch

[root@k8s-master k8s]# docker search fluentd-elasticsearch
NAME                                           DESCRIPTION                                     STARS               OFFICIAL            AUTOMATED
openfirmware/fluentd-elasticsearch             fluentd setup to use the elastic search plug…   5                                       [OK]
oosidat/fluentd-elasticsearch-container        Docker fluentd container to forward logs fro…   3                                       [OK]
ist0ne/fluentd-elasticsearch                   https://gcr.io/google_containers/fluentd-ela…   3                                       [OK]
kayrus/fluentd-elasticsearch                                                                   2
netonline/fluentd-elasticsearch                k8s.gcr.io/fluentd-elasticsearch:v2.4.0         1                                       [OK]
forkdelta/fluentd-elasticsearch                fluent/fluentd with fluent-plugin-elasticsea…   1                                       [OK]
vevo/fluentd-elasticsearch                     Docker image for sending Fluentd into Elasti…   1                                       [OK]

(2)下载

[root@k8s-master k8s]# docker pull ist0ne/fluentd-elasticsearch
Using default tag: latest
latest: Pulling from ist0ne/fluentd-elasticsearch
ee1a8002360e: Pull complete
c9d917eda150: Pull complete
6d38692b67e7: Pull complete
95a1871e425a: Pull complete
3663794ec44b: Pull complete
a7cb93690823: Pull complete
19104457e8cb: Pull complete
Digest: sha256:b563d0dd8037b6d5e0ce51f0ed204111ac8e9e84d44f300896550b38ae4fd285
Status: Downloaded newer image for ist0ne/fluentd-elasticsearch:latest
docker.io/ist0ne/fluentd-elasticsearch:latest

(3)打tag

docker tag ist0ne/fluentd-elasticsearch 172.16.10.158:80/ist0ne/fluentd-elasticsearch

(4)推送到仓库

[root@k8s-master k8s]# docker push 172.16.10.158:80/ist0ne/fluentd-elasticsearch
The push refers to repository [172.16.10.158:80/ist0ne/fluentd-elasticsearch]
1218b72d3db0: Pushed
66fb39ddd31b: Pushed
85c2f259a777: Pushed
b6a62dcf7b64: Pushed
71fa72fe86b4: Pushed
27dcf30dd611: Pushed
eb78099fbf7f: Pushed
latest: digest: sha256:b563d0dd8037b6d5e0ce51f0ed204111ac8e9e84d44f300896550b38ae4fd285 size: 1776

二、创建 DaemonSet

基于镜像 fluentd-elasticsearch 来创建 DaemonSet

(1)daemonset.yaml

[root@k8s-master k8s]# cat daemonset.yaml
apiVersion: apps/v1
kind: DaemonSet
metadata:
  name: fluentd-elasticsearch
  namespace: kube-system
  labels:
    app: fluentd-log
spec:
  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: 172.16.10.158:80/fluentd-elasticsearch
        resources:
          limits:
            memory: 200Mi
          requests:
            cpu: 100m
            memory: 200Mi
        volumeMounts:
        - name: varlog
          mountPath: /var/log
        - name: varlibdockercontainers
          mountPath: /var/lib/docker/containers
          readOnly: true
      terminationGracePeriodSeconds: 30
      volumes:
      - name: varlog
        hostPath:
          path: /var/log
      - name: varlibdockercontainers
        hostPath:
          path: /var/lib/docker/containers

(2)创建daemonset

[root@k8s-master k8s]# kubectl create -f daemonset.yaml
daemonset.apps/fluentd-elasticsearch created

(3)查看 fluentd-elasticsearch

[root@k8s-master k8s]# kubectl get ds -n kube-system | grep fluentd
fluentd-elasticsearch   2         2         0       2            0           <none>                   114s

(4)查看pod

[root@k8s-master k8s]# kubectl get pods -n kube-system -o wide | grep fluentd
fluentd-elasticsearch-5fbwv                1/1     Running   0          3m      10.244.85.215    k8s-node01   <none>           <none>
fluentd-elasticsearch-zkq9n                1/1     Running   0          2m58s   10.244.235.194   k8s-master   <none>           <none>

(5)查看daemonset详细信息

[root@k8s-master k8s]# kubectl describe ds fluentd-elasticsearch -n kube-system
Name:           fluentd-elasticsearch
Selector:       name=fluentd-elasticsearch
Node-Selector:  <none>
Labels:         app=fluentd-log
Annotations:    deprecated.daemonset.template.generation: 2
Desired Number of Nodes Scheduled: 2
Current Number of Nodes Scheduled: 2
Number of Nodes Scheduled with Up-to-date Pods: 2
Number of Nodes Scheduled with Available Pods: 2
Number of Nodes Misscheduled: 0
Pods Status:  2 Running / 0 Waiting / 0 Succeeded / 0 Failed
Pod Template:
  Labels:  name=fluentd-elasticsearch
  Containers:
   fluentd-elasticsearch:
    Image:      172.16.10.158:80/ist0ne/fluentd-elasticsearch
    Port:       <none>
    Host Port:  <none>
    Limits:
      memory:  200Mi
    Requests:
      cpu:        100m
      memory:     200Mi
    Environment:  <none>
    Mounts:
      /var/lib/docker/containers from varlibdockercontainers (ro)
      /var/log from varlog (rw)
  Volumes:
   varlog:
    Type:          HostPath (bare host directory volume)
    Path:          /var/log
    HostPathType:
   varlibdockercontainers:
    Type:          HostPath (bare host directory volume)
    Path:          /var/lib/docker/containers
    HostPathType:
Events:
  Type    Reason            Age    From                  Message
  ----    ------            ----   ----                  -------
  Normal  SuccessfulCreate  4m16s  daemonset-controller  Created pod: fluentd-elasticsearch-5fbwv
  Normal  SuccessfulCreate  4m14s  daemonset-controller  Created pod: fluentd-elasticsearch-zkq9n

三、版本回退

如果进行过升级,可以进行回归操作

(1)查询历史版本

[root@k8s-master k8s]# kubectl rollout history daemonset fluentd-elasticsearch -n kube-system
daemonset.apps/fluentd-elasticsearch
REVISION  CHANGE-CAUSE
1         <none>
2         <none>

(2)查询某一版本详细信息

[root@k8s-master k8s]# kubectl rollout history daemonset fluentd-elasticsearch -n kube-system --revision=2
daemonset.apps/fluentd-elasticsearch with revision #2
Pod Template:
  Labels:       name=fluentd-elasticsearch
  Containers:
   fluentd-elasticsearch:
    Image:      172.16.10.158:80/ist0ne/fluentd-elasticsearch
    Port:       <none>
    Host Port:  <none>
    Limits:
      memory:   200Mi
    Requests:
      cpu:      100m
      memory:   200Mi
    Environment:        <none>
    Mounts:
      /var/lib/docker/containers from varlibdockercontainers (ro)
      /var/log from varlog (rw)
  Volumes:
   varlog:
    Type:       HostPath (bare host directory volume)
    Path:       /var/log
    HostPathType:
   varlibdockercontainers:
    Type:       HostPath (bare host directory volume)
    Path:       /var/lib/docker/containers
    HostPathType:

(3)回退版本

[root@k8s-master k8s]# kubectl rollout undo  daemonset fluentd-elasticsearch -n kube-system --to-revision=1
daemonset.apps/fluentd-elasticsearch rolled back

(4)查看回退状态

[root@k8s-master k8s]# kubectl rollout status ds  fluentd-elasticsearch -n kube-system
daemon set "fluentd-elasticsearch" successfully rolled out

四、指定 Node 节点

1、nodeSelector:基于Node的标签来选择Node,只调度到匹配指定label的Node上。

2、nodeAffinity:基于Node的标签来选择Node,功能更丰富的Node选择器,比如支持集合操作,nodeAffinity 目前支持两种:requiredDuringSchedulingIgnoredDuringExecution 和 preferredDuringSchedulingIgnoredDuringExecution,分别代表必须满足条件和优选条 件。

3、podAffinity:基于 Pod 的标签来选择 Node,调度到满足条件的Pod所在的Node上,仅调度到满足条件 Pod 所在的 Node 上,支 持 podAffinity 和 podAntiAffinity。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

k8s学习(十一)创建DaemonSet 的相关文章

随机推荐

  • 学计算机这么课最大的收获是啥,计算机课程学习心得范文

    计算机网络系统是一个集计算机硬件设备 通信设施 软件系统及数据处理能力为一体的 能够实现资源共享的现代化综合服务系统 计算机网络系统的组成可分为三个部分 即硬件系统 软件系统及网络信息系统 下面是学习啦小编为大家收集整理的计算机课程学习心得
  • 电流采样电路

    文章目录 前言 一 差分放大电路的优点 二 注意事项 总结 前言 有时候我们需要对电流进行采样 但是电流实际是不好测量的 最简单的方法就是把电流转化为电压 这里推荐一种比较简单的放大电路 差分放大电路 大家可以看模电课本 283 284页的
  • vue开发一些常遇见的问题

    1 显示富文本的内容 自动换行样式 文本超出 div class introduction div introduction font size 16px font weight 400 color 666666 letter spacin
  • html background属性

    background属性 属性解释 background属性是css中应用比较多 且比较重要的一个属性 它是负责给盒子设置背景图片和背景颜色的 background是一个复合属性 它可以分解成如下几个设置项 background color
  • 2022年陕西省职业院校技能大赛中职组网络安全赛项规程

    2022年陕西省职业院校技能大赛中职组 网络安全赛项规程 一 赛项名称 赛项名称 网络安全 赛项归属 信息技术类 二 竞赛目的 为检验中职学校网络信息安全人才培养成效 促进网络信息安全专业教学改革 培养大批既满足国家网络安全战略需要有具备世
  • 获取下拉框选中的值

    1 当Jquery是1 9以下版本 selector live change function 执行的代码 2 当Jquery版本大于1 9 body on change selector function 执行的代码 3 简单版 推荐使用
  • Spring MVC 配置HttpMessageConverter和Conversion-service的问题

    最近开始学习spring mvc 配置HttpMessageConverter来转换json和xml 以及配置conversion service来格式化数据 这个两个配置总不能都测试通过 要么是第一个转换json和xml出错 格式化数据通
  • 自定义注解的场景及其实现

    自定义注解的场景及其实现 自定义注解的场景 登陆 权限拦截 日志处理 以及各种Java框架 如Spring Mybatis Hibernate JUnit 实现方法 Java自定义注解通过运行期间靠反射获取注解 实际开发过程中 如果我们需要
  • Elasticsearch学习笔记4:Springboot整合ES

    一 编写ES配置类 import org springframework context annotation Bean import org springframework context annotation Configuration
  • 区块链入门必读(FISCO)

    关键概念 区块链是由多个学科交叉组合形成的一门技术 本章将阐述区块链相关的基本概念 对涉及的基本理论进行科普介绍 如果您已经对这些基本技术很熟悉 可以跳过本章 区块链是什么 区块链 blockchain 是在比特币之后提出的一个概念 在中本
  • Java的文件上传

    文件上传效果图 代码如下 package star july upload import java io File import java io IOException import java util List import java u
  • ChatGPT在电子健康记录和医疗信息查询中的应用前景如何?

    电子健康记录 EHRs 和医疗信息查询在现代医疗保健系统中起着至关重要的作用 它们有助于提高患者护理的质量 提高医疗保健的效率 减少错误 促进患者参与 并促进医学研究和数据驱动的决策 ChatGPT作为一种人工智能技术 在这一领域具有巨大的
  • 关于vtk中的vtkActor、vtkRenderer、vtkRenderWindow的设置

    1 正常显示vtk 需要 vtkActor 可以有多个 进行一些演员的处理 vtkRenderer 可以有多个 将vtkActor进行加入 vtkRenderWindow 只能有一个 将vtkRenderer进行加入 vtkRenderWi
  • js 分浏览器设置style属性

    http www cnblogs com jianshao810 archive 2010 06 20 1761120 html var cssText font weight bold color red 下面写法用于firefox类型浏
  • 史上最牛,接口自动化测试-yaml框架配置文件总结(超级详细)

    目录 导读 前言 一 Python编程入门到精通 二 接口自动化项目实战 三 Web自动化项目实战 四 App自动化项目实战 五 一线大厂简历 六 测试开发DevOps体系 七 常用自动化测试工具 八 JMeter性能测试 九 总结 尾部小
  • EasyUI项目之购物车功能

    前言 继续讲解EasyUi项目 网上书城 之加入购物车 清空购物车功能 码字不易 点个关注 转载请说明 开发工具 eclipse MySQL 目录 1 目标 2 代码展示 加入购物车 清空购物车 思维导图 实现购物车的三种方式 1 目标 加
  • adcsr图像超分代码_MMEditing: 多任务图像视频编辑工具箱

    我们近期在 OpenMMLab 项目中开源了 MMEditing 这是一个图像和视频编辑的工具箱 它目前包含了常见的编辑任务 比如图像修复 图像抠图 超分辨率和生成模型 在编辑图像或者视频的时候 我们往往是需要组合使用以上任务的 因此我们将
  • npm run build --report 不生成report分析文件原因

    运行 下面命令即可 命令行后缀参数需要多加 符号 npm run build report
  • C语言中文件操作,即文件打开,文件写入、文件读取、文件关闭

    1 文件读写前 必须先使用fopen函数打开文件 fopen 若要对文件进行读写操作 第一步需要使用fopen 函数fopen 函数用于打开指定路径的文件 获取指向该文件的指针 函数原型 func fopen brief 打开文件 para
  • k8s学习(十一)创建DaemonSet

    目录 前言 一 下载 fluentd elasticsearch 二 创建 DaemonSet 三 版本回退 四 指定 Node 节点 前言 DaemonSet 保证在每个 Node 上都运行一个容器副本 常用来部署一些集群的日志 监 控或