当前位置: 首页 > news >正文

【k8s】deamonset文件和说明

目录

deamonset的相关命令

deamonset的定义

deamonset的使用场景

deamonset的例子

deamonset字段说明

serviceAccountName

DaemonSet的结构及其各个部分的作用


deamonset的相关命令
 

#查看<name-space>空间内有哪些deamonset
kubectl get DaemonSet  -n  <name-space>   #查看<pod name>的deamonset
kubectl describe DaemonSet -n <name-space>  <pod name>#导出 <name-space>空间内<pod name>的deamonset
kubectl get daemonset <pod name> -n <name-space>  -o yaml > daemonset.yaml#应用某个deamonset  (给k8s加载这个DaemonSet文件)
kubectl create -f nginx-deployment.yaml

deamonset的定义

官方说明:

        DaemonSet 是 Kubernetes 集群中的一种资源对象,用来确保所有(或某些特定)节点上都运行该容器的副本。DaemonSet 确保当有节点加入集群时,节点上会启动你指定的容器;同时当节点从集群中移除时,这些容器也会被垃圾回收。

举个例子,如果你有一个名为 daemonset.yaml 的文件,你可以通过以下命令将其应用到 Kubernetes 集群:

kubectl apply -fdaemonset.yaml

这个命令告诉 kubectl 根据 daemonset.yaml 文件中定义的配置来在集群中创建或更新资源

大白话:

这个文件是一个K8S资源描述文件,它定义了一个DaemonSet资源,

DaemonSet告诉K8S如何在集群所有(或部分)节点上运行Pod的副本。

DaemonSet 最常见的应用场景之一是在节点上部署系统级守护进程。例如,Kubernetes 官方提供的 kube-proxy 和 kube-dns 组件都是以 DaemonSet 的形式运行在每个节点上的。

deamonset的使用场景

1,根据dockerfile文件生成了一个pod的镜像 

让k8s 把这个pod镜像要在哪些节点上运行,需要哪些资源(port,内存等),就需要一个配置文件告诉k8s,这个就是DaemonSet文件。

2,配置DaemonSet文件,告诉K8s在哪些节点运行这个pod镜像,给这个pod镜像分配什么资源等。

3,给k8s加载这个DaemonSet文件

deamonset的例子

    在下面这个 YAML 文件中,我们定义了一个 Deployment 对象,它的主体部分(spec.template 部分)是一个使用 Nginx 镜像的 Pod,而这个 Pod 的副本数是 2(replicas=2)。

apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-deployment    #这个pod的名字

  labels:

    app: nginx

spec:

  replicas: 2

  selector:

    matchLabels:

      app: nginx

  template:

    metadata:

      labels:

        app: nginx

    spec:

      containers:

      - name: nginx             #pod 内第一个容器的名字

        image: nginx:1.7.9   #<---镜像的id,确保这个镜像已经拉到本地了

        ports:

        - containerPort: 80

使用下面的命令给k8s加载这个DaemonSet文件

$ kubectl create -f nginx-deployment.yaml

这样k8s就根据DaemonSet的要求把这个pod 在集群的节点上运行了。

deamonset字段说明

以下是该文件内容的详细解释:
- `apiVersion: apps/v1`: 使用的API版本,表示这是一个稳定版本的DaemonSet。
- `kind: DaemonSet`: 资源类型是DaemonSet。
- `metadata`: 包含用于描述DaemonSet的元数据。- `annotations`: 包含键值对的注释信息。- `deprecated.daemonset.template.generation`: 这个注解表示这个DaemonSet的控制器检测到template是第二次改变。- `creationTimestamp`: DaemonSet资源创建的时间标记。- `generation`: 表示DaemonSet的版本,每次修改DaemonSet时都会递增。- `name`: DaemonSet的名字是`engine-peon`。- `namespace`: DaemonSet被创建在`product-storage`命名空间下。- `resourceVersion`: 内部资源的版本号。- `uid`: 资源的唯一id。
- `spec`: DaemonSet的规格。- `revisionHistoryLimit`: DaemonSet的修订历史限制,表示会保持10个历史的DaemonSet revision。- `selector`: 用于选择Pod的标签。- `matchLabels`: DaemonSet管理的Pod必须具备的标签。- `template`: 用于创建Pod的模板。- `metadata`: 模板的元数据。- `spec`: 描述创建Pod的详细内容。- `affinity`: Pod的亲和性设置。- `nodeAffinity`: 设置Pod调度的节点亲和性限制。- `containers`: 定义了容器的列表。- `image`: 使用的容器镜像。- `name`: 容器的名称。- `ports`: 容器所开放的端口设定。- `resources`: 资源限制和请求。- `securityContext`: 安全上下文设定。- `terminationMessagePath`: 容器停止时输出的信息存放路径。- `volumeMounts`: 容器挂载的卷。- `dnsPolicy`: DNS策略。- `hostNetwork`: 是否使用主机网络。- `initContainers`: 在主容器运行前运行的初始化容器。- `priorityClassName`: 优先级类名。- `restartPolicy`: Pod的重启策略。- `schedulerName`: 使用的调度器名称。- `serviceAccount`: 使用的服务账号。- `terminationGracePeriodSeconds`: 清理Pod所需要等待的时间。- `volumes`: Pod上挂载的卷。- `updateStrategy`: 更新策略设置,如何应对Pod的更新。
- `status`: DaemonSet的当前状态信息。- `currentNumberScheduled`: 当前应该运行的Pod数量。- `desiredNumberScheduled`: 追求的目标Pod数量。- `numberAvailable`: 可用Pod数。- `numberMisscheduled`: 错误调度的Pod数。- `numberReady`: 准备就绪的Pod数。- `observedGeneration`: DaemonSet控制器最后一次观察到的`generation`。- `updatedNumberScheduled`: 更新版的Pod的数量。总之,这个DaemonSet用于部署名为`engine-peon`的Pod,该Pod将在标签为`role/stor-worker=true`的节点上运行,并且整个集群中每个符合条件的节点会运行一个该DaemonSet管理的Pod。当创建DaemonSet资源时,Kubernetes的控制平面会接收这个YAML配置,并根据其中的描述创建并管理DaemonSet所管理的Pods。DaemonSet确保在集群中的每个符合条件的节点上运行指定的Pod副本。继续解释一下DaemonSet中的其他关键组件:### selector
`selector`字段用于告诉DaemonSet如何找到它应该管理的Pods。它是通过匹配标签来识别Pods。
- `matchLabels`: 这个键值对与`template.metadata.labels`中定义的标签一致,确保DaemonSet知道只应该管理哪些具有这些标签的Pods。在这里,匹配标签为`app: example`。### template
这部分定义了当DaemonSet创建新的Pod副本时,这些Pod的样子。这个template是模板,用于生成具体的Pod实例。
- `metadata.labels`: 在`template`下的`metadata`中,`labels`定义了Pod的标签,在这个例子中是`app: example`。这个标签确保了Pod可以被上面提及的`selector`正确匹配。### template.spec
`template`下的`spec`字段详细定义了Pod内部的配置,如下所示:
- `containers`: 这个列表包含了在Pod中运行的容器的定义。每个容器都需要有一个名字,并且可以指定要使用的镜像、端口、环境变量等一系列参数。对于这个示例DaemonSet来说,意味着集群中的每个符合条件的节点上都会运行一个名为`example-container`的容器,该容器采用的镜像是`nginx`。DaemonSet控制器会自动在新增的符合条件的节点上创建Pod,并且如果有节点被删除,相应的Pod也会被清理。DaemonSet常用于需要在集群的每个节点上运行的服务,比如日志收集器、监控代理等。这种分布在每个节点的特性确保了这些服务可以收集到所有节点的数据或监控节点的状态。

serviceAccountName

简介:

是Pod使用的Service Account的名称,Pod与Kubernetes API进行交互时,例如拉取配置信息,更新资源状态等,需要对API请求进行授权。通过Service Account,Kubernetes可以控制Pod对API的访问权限,确保它只能访问它需要的资源。

详细说明:

在Kubernetes的`DaemonSet`配置文件的`template`下的`spec`部分,可以指定`serviceAccount`或`serviceAccountName`。据我所知截止到我的知识截止点,`DaemonSet`中是不具有`serviceAccount`字段的,只有`serviceAccountName`字段。下面是`serviceAccountName`字段的用途:

- `serviceAccountName`: 该字段用于指定Pod使用的Service Account的名称。Service Account在Kubernetes中提供了一个身份认证机制,用于给Pod授予访问Kubernetes API的权限。当Pod需要与Kubernetes API进行交互时,例如拉取配置信息,更新资源状态等,需要对API请求进行授权。通过Service Account,Kubernetes可以控制Pod对API的访问权限,确保它只能访问它需要的资源。

当你在一个Pod模板中指定`serviceAccountName`时,所有由这个模板创建的Pod都会自动挂载一个包含指定Service Account凭据的秘钥。这意味着Pod中运行的容器将能够使用这些凭据与Kubernetes API进行交互。

通常,Service Account与特定的访问控制策略相关联,这些策略是通过Role和RoleBinding(或ClusterRole和ClusterRoleBinding,如果需要集群级别的访问权限)来定义的。这样,你可以对Pod进行精细化的权限管理,只给予它们完成其工作所需要的最小权限。

如果你在一个`DaemonSet`配置中看到了`serviceAccount`字段,这可能是一个定制化的Kubernetes发行版支持的特定扩展。不过,根据最常见的Kubernetes API文档,通常只使用`serviceAccountName`来声明应该与Pod关联的Service Account。

DaemonSet的结构及其各个部分的作用

在 DaemonSet 对象中,有以下几个部分:

  • metadata:元数据部分包含了对象的名称、命名空间、标签等信息。
  • spec:规格部分包含了 DaemonSet 对象的规格,如选择器、Pod 模板等。
  • status:状态部分包含了 DaemonSet 对象的当前状态信息,如运行中的 Pod 数量等。

 

其中,spec 部分是 DaemonSet 对象中最重要的部分,它包含了以下几个字段:

  • selector:指定了哪些节点需要运行 Pod 副本。可以使用节点标签选择器指定节点的标签,也可以使用节点名称选择器指定节点的名称。
  • template:指定了要运行在节点上的 Pod 模板。模板中可以指定容器镜像、启动命令等信息。
  • updateStrategy:指定了 DaemonSet 的更新策略。默认情况下,DaemonSet 会在每个节点上运行一个 Pod 副本,如果需要更新 Pod 版本,则会逐个节点进行更新。可以使用 RollingUpdate 策略实现平滑的更新过程,也可以使用 OnDelete 策略实现在节点删除时更新 Pod 版本。

相关文章:

【k8s】deamonset文件和说明

目录 deamonset的相关命令 deamonset的定义 deamonset的使用场景 deamonset的例子 deamonset字段说明 serviceAccountName DaemonSet的结构及其各个部分的作用 deamonset的相关命令 #查看<name-space>空间内有哪些deamonset kubectl get DaemonSet -n <na…...

Zookeeper-Zookeeper特性与节点数据类型详解

1.Zookeeper介绍 ZooKeeper 是一个开源的分布式协调框架&#xff0c;是Apache Hadoop 的一个子项目&#xff0c;主要用来解决分布式集群中应用系统的一致性问题。Zookeeper 的设计目标是将那些复杂目容易出错的分布式一致性服务封装起来&#xff0c;构成一高效可靠的原语集&…...

云计算复习提纲

第一章 大数据的概念&#xff1a;海量数据的规模巨大到无法通过目前主流的计算机系统在合理时间内获取、存储、管理、处理并提炼以帮助使用者决策 大数据的特点&#xff1a;①数据量大&#xff0c;存储的数据量巨大&#xff0c;PB级别是常态&#xff1b;②多样&#xff0c;数…...

Vue-响应式数据

一、ref创建基本类型的响应式数据 vue3可以使用ref、reactive去定义响应式数数据。 知识点汇总 使用ref需要先引入ref&#xff0c;import {ref} from vue在模板 template 中使用了添加ref 的响应式数据&#xff0c;变量的后面不用添加.value所有js代码里面&#xff0c;去操作r…...

Vue开发者必备!手把手教你实现类似Element Plus的全局提示组件!

前言 在Web开发中&#xff0c;用户体验至关重要。有效的信息提示和错误消息对于确保用户更好地理解和操作至关重要。在这个背景下&#xff0c;全局弹框提示组件成为了一个非常有用的工具。Vue.js&#xff0c;作为当前最受欢迎的前端框架之一&#xff0c;为创建灵活、可复用的弹…...

大数据 - Hadoop系列《三》- HDFS(分布式文件系统)概述

&#x1f436;5.1 hdfs的概念 HDFS分布式文件系统,全称为:Hadoop Distributed File System。 它是一个文件系统&#xff0c;用于存储文件&#xff0c;通过目录树来定位文件&#xff1b;其次&#xff0c;它是分布式的&#xff0c;由很多服务器联合起来实现其功能&#xff0c;集…...

Golang标准库sync的使用

Go语言作为现代编程语言&#xff0c;其并发编程的优势是有目共睹的。在实际编程中&#xff0c;我们常常需要保证多个goroutine之间的同步&#xff0c;这就需要使用到Go语言的sync标准库。sync库提供了基本的同步原语&#xff0c;例如互斥锁&#xff08;Mutex&#xff09;和等待…...

判断两张图片是否完全一致

判断两张图片是否为完全相同的图片 批量判断尺寸 大小 图像展示内容体是否完全一致的图片 import os import hashlib from PIL import Imagedef check_img_repeat(directory):"""批量对图片进行重复性校验是检查一组图像中是否有相同或几乎相同的图像副本。一…...

2024洗地机哪家强?口碑洗地机推荐

现如今&#xff0c;智能家电在人们生活中变得越来越受欢迎&#xff0c;例如智能洗地机的出现&#xff0c;不仅省时省力&#xff0c;还实现了家务清洁的自由。在家庭中&#xff0c;地面清洁一直是一个令人头疼的问题&#xff0c;各种智能家居品牌通过开发各种智能家电产品来解决…...

k8s的资源管理

命令行: kubectl命令行工具优点: 90%以上的场景都可以满足 对资源的增&#xff0c;删&#xff0c;查比较方便&#xff0c;对改不是很友好缺点:命令比较冗长&#xff0c;复杂难记 声明方式&#xff1a;k8s当中的yaml文件实现资源管理----声明式GUI:图形化工具的管理。 查看k8s的…...

docker应用部署(部署MySql,部署Tomcat,部署Nginx,部署Redis)

Docker 应用部署 一、部署MySQL 搜索mysql镜像 docker search mysql拉取mysql镜像 docker pull mysql:5.6创建容器&#xff0c;设置端口映射、目录映射 # 在/root目录下创建mysql目录用于存储mysql数据信息 mkdir ~/mysql cd ~/mysqldocker run -id \ -p 3307:3306 \ --na…...

非常好用的ocr图片文字识别技术,识别图片中的文字

目录 一.配置环境 二.应用 2.1常见图片识别 2.2排版简单的印刷体截图图片识别 2.3竖排文字识别 2.4英文识别 2.5繁体中文识别 2.6单行文字的图片识别 三.参考 一.配置环境 pip3 install cnocr -i https://pypi.tuna.tsinghua.edu.cn/simple pip3 install onnxruntime…...

20231227在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单后摄像头ov13850

20231227在Firefly的AIO-3399J开发板的Android11的挖掘机的DTS配置单后摄像头ov13850 2023/12/27 18:40 1、简略步骤&#xff1a; rootrootrootroot-X99-Turbo:~/3TB$ cat Android11.0.tar.bz2.a* > Android11.0.tar.bz2 rootrootrootroot-X99-Turbo:~/3TB$ tar jxvf Androi…...

Unity中Shader裁剪空间推导(透视相机到裁剪空间的转化矩阵)

文章目录 前言一、简单看一下 观察空间—>裁剪空间—>屏幕空间 的转化1、观察空间&#xff08;右手坐标系、透视相机&#xff09;2、裁剪空间&#xff08;左手坐标系、且转化为了齐次坐标&#xff09;3、屏幕空间&#xff08;把裁剪坐标归一化设置&#xff09;4、从观察空…...

企业签名分发对移动应用开发者有什么影响

企业签名分发是移动应用开发者在应用程序发布前测试、内部分发和特定的受众群体分发等方面比较常用的一种工具。那对于应用商城分发有啥区别&#xff0c;下面简单的探讨一下。 独立分发能力 通过企业签名分发开发者可以自己决定应用程序的发布时间和方式&#xff0c;不用受应用…...

3D游戏角色建模纹理贴图处理

在线工具推荐&#xff1a; 3D数字孪生场景编辑器 - GLTF/GLB材质纹理编辑器 - 3D模型在线转换 - Three.js AI自动纹理开发包 - YOLO 虚幻合成数据生成器 - 三维模型预览图生成器 - 3D模型语义搜索引擎 在本文中&#xff0c;我们将介绍 3D 纹理的基础知识&#xff0c;并讨…...

【C++ 单例模式】

正确的析构 静态实例和回收类 SingletonMode.cpp #include <iostream> #include <pthread.h>class Singleton {private:Singleton(){std::cout << "构造" << std::endl;};~Singleton(){std::cout << "析构" << std::…...

React16源码: ConcurrentMode的使用及源码实现

ConcurrentMode 1 ) 概述 ConcurrentMode 是 React 16 出来的一个最令人振奋的功能在2018年年初是 Async Mode&#xff0c;在发布了16.6之后&#xff0c;名字进行了更新然后改成了 ConcurrentMode&#xff0c;中间的API有一个过渡的版本&#xff0c;后续会提到它其实是 React…...

SQL性能优化-索引

1.性能下降sql慢执行时间长等待时间长常见原因 1&#xff09;索引失效 索引分为单索、复合索引。 四种创建索引方式 create index index_name on user (name); create index index_name_2 on user(id,name,email); 2&#xff09;查询语句较烂 3&#xff09;关联查询太多join&a…...

Ubuntu本地快速搭建web小游戏网站,公网用户远程访问

&#x1f525;博客主页&#xff1a; 小羊失眠啦. &#x1f3a5;系列专栏&#xff1a;《C语言》 《数据结构》 《Linux》《Cpolar》 ❤️感谢大家点赞&#x1f44d;收藏⭐评论✍️ 前些天发现了一个巨牛的人工智能学习网站&#xff0c;通俗易懂&#xff0c;风趣幽默&#xff0c;…...

华为云AI开发平台ModelArts

华为云ModelArts&#xff1a;重塑AI开发流程的“智能引擎”与“创新加速器”&#xff01; 在人工智能浪潮席卷全球的2025年&#xff0c;企业拥抱AI的意愿空前高涨&#xff0c;但技术门槛高、流程复杂、资源投入巨大的现实&#xff0c;却让许多创新构想止步于实验室。数据科学家…...

【kafka】Golang实现分布式Masscan任务调度系统

要求&#xff1a; 输出两个程序&#xff0c;一个命令行程序&#xff08;命令行参数用flag&#xff09;和一个服务端程序。 命令行程序支持通过命令行参数配置下发IP或IP段、端口、扫描带宽&#xff0c;然后将消息推送到kafka里面。 服务端程序&#xff1a; 从kafka消费者接收…...

【力扣数据库知识手册笔记】索引

索引 索引的优缺点 优点1. 通过创建唯一性索引&#xff0c;可以保证数据库表中每一行数据的唯一性。2. 可以加快数据的检索速度&#xff08;创建索引的主要原因&#xff09;。3. 可以加速表和表之间的连接&#xff0c;实现数据的参考完整性。4. 可以在查询过程中&#xff0c;…...

【单片机期末】单片机系统设计

主要内容&#xff1a;系统状态机&#xff0c;系统时基&#xff0c;系统需求分析&#xff0c;系统构建&#xff0c;系统状态流图 一、题目要求 二、绘制系统状态流图 题目&#xff1a;根据上述描述绘制系统状态流图&#xff0c;注明状态转移条件及方向。 三、利用定时器产生时…...

linux 下常用变更-8

1、删除普通用户 查询用户初始UID和GIDls -l /home/ ###家目录中查看UID cat /etc/group ###此文件查看GID删除用户1.编辑文件 /etc/passwd 找到对应的行&#xff0c;YW343:x:0:0::/home/YW343:/bin/bash 2.将标红的位置修改为用户对应初始UID和GID&#xff1a; YW3…...

c#开发AI模型对话

AI模型 前面已经介绍了一般AI模型本地部署&#xff0c;直接调用现成的模型数据。这里主要讲述讲接口集成到我们自己的程序中使用方式。 微软提供了ML.NET来开发和使用AI模型&#xff0c;但是目前国内可能使用不多&#xff0c;至少实践例子很少看见。开发训练模型就不介绍了&am…...

深度学习习题2

1.如果增加神经网络的宽度&#xff0c;精确度会增加到一个特定阈值后&#xff0c;便开始降低。造成这一现象的可能原因是什么&#xff1f; A、即使增加卷积核的数量&#xff0c;只有少部分的核会被用作预测 B、当卷积核数量增加时&#xff0c;神经网络的预测能力会降低 C、当卷…...

【 java 虚拟机知识 第一篇 】

目录 1.内存模型 1.1.JVM内存模型的介绍 1.2.堆和栈的区别 1.3.栈的存储细节 1.4.堆的部分 1.5.程序计数器的作用 1.6.方法区的内容 1.7.字符串池 1.8.引用类型 1.9.内存泄漏与内存溢出 1.10.会出现内存溢出的结构 1.内存模型 1.1.JVM内存模型的介绍 内存模型主要分…...

基于江科大stm32屏幕驱动,实现OLED多级菜单(动画效果),结构体链表实现(独创源码)

引言 在嵌入式系统中&#xff0c;用户界面的设计往往直接影响到用户体验。本文将以STM32微控制器和OLED显示屏为例&#xff0c;介绍如何实现一个多级菜单系统。该系统支持用户通过按键导航菜单&#xff0c;执行相应操作&#xff0c;并提供平滑的滚动动画效果。 本文设计了一个…...

AD学习(3)

1 PCB封装元素组成及简单的PCB封装创建 封装的组成部分&#xff1a; &#xff08;1&#xff09;PCB焊盘&#xff1a;表层的铜 &#xff0c;top层的铜 &#xff08;2&#xff09;管脚序号&#xff1a;用来关联原理图中的管脚的序号&#xff0c;原理图的序号需要和PCB封装一一…...