云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载本文是一份围绕 KubeVela 内置daemon组件类型的实战指南。daemon组件将应用抽象为 Kubernetes DaemonSet 工作负载适合在集群每个节点上运行日志采集、节点监控等守护进程。通过阅读本文你将掌握daemon组件的完整参数体系、五类卷挂载方式、常用 trait 组合技巧以及其 CUE 模板底层的渲染与健康检查逻辑并能够基于文中的 node-exporter 示例直接落地一套节点监控方案。daemon 组件是什么daemon是 KubeVela 内置的组件定义ComponentDefinition其官方描述为 Describes daemonset services in Kubernetes即把用户声明的组件渲染为 Kubernetes 中的 DaemonSet 资源。与每次部署固定副本数的 Deployment/StatefulSet 不同DaemonSet 会确保集群中符合选择条件的每个节点都运行一个 Pod 副本天然适合以下场景节点指标采集与监控如 node-exporter、cAdvisor日志收集 Agent如 fluentd、filebeat网络插件、存储插件等基础设施守护进程需要在宿主机文件系统上读写数据的系统级服务从源码看该组件的定义位于 vela-templates/definitions/internal/component/daemon.cue其attributes.workload声明了与底层资源的映射关系workload: { definition: { apiVersion: apps/v1 kind: DaemonSet } type: daemonsets.apps }也就是说应用一个type: daemon的组件KubeVela 最终会向集群下发一个apps/v1/DaemonSet对象。在 Helm Chart 中KubeVela 安装时会自动把该定义渲染为 charts/vela-core/templates/defwithtemplate/daemon.yaml 中的 ComponentDefinition 并注册到集群因此开箱即用。一个完整的实战示例节点级 node-exporter 监控references/docgen/def-doc/component/daemon.eg.md给出了 daemon 组件最典型的使用示例在vela-system命名空间下以addon-node-exporter应用部署 Prometheus 官方 node-exporter把宿主机的/sys与根目录以只读方式挂载进 Pod再通过command、expose、resource三个 trait 完成启动参数注入、监控端口暴露与资源限制。apiVersion: core.oam.dev/v1beta1 kind: Application metadata: name: addon-node-exporter namespace: vela-system spec: components: - name: node-exporter type: daemon properties: image: prom/node-exporter imagePullPolicy: IfNotPresent volumeMounts: hostPath: - mountPath: /host/sys mountPropagation: HostToContainer name: sys path: /sys readOnly: true - mountPath: /host/root mountPropagation: HostToContainer name: root path: / readOnly: true traits: - properties: args: - --path.sysfs/host/sys - --path.rootfs/host/root - --no-collector.wifi - --no-collector.hwmon - --collector.filesystem.ignored-mount-points^/(dev|proc|sys|var/lib/docker/.|var/lib/kubelet/pods/.)($|/) - --collector.netclass.ignored-devices^(veth.*)$ type: command - properties: annotations: prometheus.io/path: /metrics prometheus.io/port: 8080 prometheus.io/scrape: true port: - 9100 type: expose - properties: cpu: 0.1 memory: 250Mi type: resource这个示例同时体现了 daemon 组件的三个关键能力宿主路径挂载通过volumeMounts.hostPath把宿主机目录映射进容器并借助mountPropagation: HostToContainer使宿主机的后续挂载事件能传播进容器这正是 node-exporter 读取宿主机/proc、/sys数据的基础启动参数注入commandtrait 注入--path.sysfs等参数并关闭对监控无意义的 wifi/hwmon 采集器、过滤虚拟网卡与系统挂载点降低采集噪声监控暴露与资源约束exposetrait 创建 Service 并打上prometheus.io/scrape系列注解供 Prometheus 自动发现resourcetrait 将每个 Pod 的 CPU/内存请求与限制统一设为0.1与250Mi防止监控 Agent 挤占业务资源。daemon 组件参数详解在daemon.cue的parameter段中定义了完整参数骨架下面逐一说明各字段的语义与默认值。基础镜像与容器参数参数类型是否必填默认值说明imagestring必填无容器镜像shorti表示命令行可用-i简写imagePullPolicyAlways \| Never \| IfNotPresent可选无镜像拉取策略imagePullSecrets[...string]可选无拉取私有镜像所需的 Secret 名称列表cmd[...string]可选无覆盖容器启动命令对应 Kubernetes 的commandenv对象数组可选无环境变量支持name/value直接赋值或通过valueFrom.secretKeyRef/valueFrom.configMapKeyRef从 Secret/ConfigMap 引用cpustring可选无CPU 资源如0.5表示 0.5 核设置后同时写入 limits 与 requestsmemorystring可选无内存资源如250Mi设置后同时写入 limits 与 requestslivenessProbe/readinessProbe#HealthProbe可选无存活/就绪探针hostAliases[...{ip, hostnames}]可选无为 Pod 追加/etc/hosts条目其中#HealthProbe是一个复用的探针结构支持三种探测方式三选一exec.command执行命令、httpGet.path/portHTTP GET、tcpSocket.portTCP 探测并带有五个通用参数默认值如下initialDelaySeconds: 默认0容器启动后延迟探测的秒数periodSeconds: 默认10探测频率timeoutSeconds: 默认1探测超时successThreshold: 默认1连续成功多少次视为健康failureThreshold: 默认3连续失败多少次判定不健康端口与服务参数参数类型默认值说明portint无已废弃ignore请改用portsports对象数组无每个元素含port容器端口、name可选缺省自动生成port-端口号、protocol默认TCP可取值UDP/SCTP、expose默认false是否对外创建 ServiceexposeTypestringClusterIPService 类型可选ClusterIP/NodePort/LoadBalancer/ExternalNameaddRevisionLabelboolfalse为 true 时在 Pod 上追加app.oam.dev/revision标签labels / annotationslabels与annotations均为[string]: string的键值映射分别注入到 DaemonSet Pod 模板的 metadata 中。需要说明的是CUE 模板会自动为 Pod 追加三个 OAM 标签app.oam.dev/name、app.oam.dev/component以及在开启addRevisionLabel时的app.oam.dev/revisionlabels参数只是在此基础上追加自定义标签。volumeMounts五种卷挂载方式volumeMounts是 daemon 组件相对其他组件最独特的能力之一它把卷定义与挂载点声明合并在一起支持五种子类型pvc、configMap、secret、emptyDir、hostPath。hostPath挂载宿主机目录示例中使用的hostPath子类型字段如下字段类型默认值说明namestring必填卷与挂载点共用名称mountPathstring必填容器内挂载路径pathstring必填宿主机路径mountPropagationNone \| HostToContainer \| Bidirectional无挂载传播模式示例使用HostToContainerreadOnlybool无是否只读监控场景通常置为truesubPathstring无仅挂载卷内的子路径其余四种子类型pvcname、mountPath、claimNamePVC 名称对应 Kubernetes 的persistentVolumeClaim卷configMapname、mountPath、cmNameConfigMap 名称、defaultMode默认420即八进制 0644、可选itemskey/path/mode键路径映射mode默认511secret字段结构与 configMap 一致secretName指向 Secret 名称emptyDirname、mountPath、medium默认空字符串可设为Memory使用内存介质。底层渲染逻辑模板内部先把五类挂载分别展开为mountsArray挂载点数组与volumesList卷定义数组再经过deDupVolumesArray按name去重后写入 DaemonSet 的spec.template.spec。也就是说即使多个挂载点引用同名卷最终下发的 DaemonSet 也只会包含一份卷定义避免重复卷声明导致的 API 校验失败参见 vela-templates/definitions/internal/component/daemon.cue 中deDupVolumesArray的推导逻辑。另外模板还保留了一个已废弃的volumes参数type可取值pvc/configMap/secret/emptyDir默认emptyDir。官方源码注释明确标注 Deprecated field, use volumeMounts instead新配置请统一使用volumeMounts。常用 trait 组合command、expose、resource 与更新策略daemon 组件本身只负责渲染 DaemonSet 工作负载对容器启动参数、网络暴露、资源配额的调整通常由 trait 完成。command注入/覆盖启动命令commandtrait 定义在 vela-templates/definitions/internal/trait/command.cue其appliesToWorkloads明确包含daemonsets.apps。支持以下字段containerName目标容器名缺省使用组件名command整体覆盖容器启动命令args整体覆盖容器参数注意与addArgs/delArgs互斥addArgs在现有参数基础上追加已有参数保留delArgs从现有参数中删除指定项containers多容器场景下为每个容器单独声明上述字段。示例中通过args一次性覆盖了 node-exporter 的全部启动参数若只是追加个别参数使用addArgs更安全不会误删镜像默认参数。expose暴露监控端口exposetrait定义见 vela-templates/definitions/internal/trait/expose.cue会额外生成一个v1/Serviceselector 默认指向app.oam.dev/component: 组件名并把annotations如prometheus.io/scrape系列写入 Service 的 metadata供 Prometheus 基于注解自动发现抓取端点。字段包括port已废弃的整数数组写法示例中即使用该旧写法暴露9100ports新写法每项含port、name、protocol默认TCP、nodePort仅NodePort类型有效annotationsService 注解matchLabels自定义 Service selectortypeService 类型默认ClusterIP。注意expose的appliesToWorkloads只包含deployments.apps与statefulsets.apps但 KubeVela 的 trait 声明与组件实际匹配以daemonsets.apps工作负载类型为基准node-exporter 示例即证明了该组合可用。resource统一设置资源请求与限制resourcetrait定义见 vela-templates/definitions/internal/trait/resource.cue适用于daemonsets.apps等五种工作负载。最简用法是同时给出cpu与memory模板会把它同时写入requests与limits即请求限制属于 Guaranteed QoS更精细的做法是用requests.cpu/requests.memory与limits.cpu/limits.memory分别指定。其默认值为cpu: 1、memory: 2048Mimemory有严格的正则校验^([1-9][0-9]{0,63})(E|P|T|G|M|K|Ei|Pi|Ti|Gi|Mi|Ki)$。k8s-update-strategy控制滚动更新行为仓库中另有一个与 daemon 高度相关的增强示例 vela-templates/definitions/usage-examples/application-daemon-with-k8s-update-strategy.yaml它在 node-exporter 基础上追加了k8s-update-strategytrait- type: k8s-update-strategy properties: targetAPIVersion: apps/v1 targetKind: DaemonSet strategy: type: RollingUpdate rollingStrategy: maxSurge: 20% maxUnavailable: 30%该 trait定义见 vela-templates/definitions/internal/trait/k8s-update-strategy.cue为 Deployment/DaemonSet/StatefulSet 统一提供更新策略注入能力。对 DaemonSet 而言strategy.type可取值RollingUpdate默认或Recreate滚动策略中maxSurge默认25%控制每批额外新建的 Pod 数量上限maxUnavailable默认25%控制每批允许不可用的 Pod 比例二者共同决定节点滚动升级的节奏适合在监控 Agent 升级时控制对节点的扰动。底层原理CUE 模板如何生成 DaemonSet理解 daemon 组件的行为关键在于其 CUE 模板的输出结构vela-templates/definitions/internal/component/daemon.cue主输出output渲染为apps/v1/DaemonSet。spec.selector.matchLabels固定为app.oam.dev/component: 组件名Pod 模板中容器名为组件名镜像取自parameter.image并按条件渲染端口、环境变量、资源、探针与卷条件输出outputs当ports中存在expose: true的端口时额外生成一个v1/Service命名为组件名selector 指向组件标签spec.type取parameter.exposeType。这意味着 daemon 组件在不依赖exposetrait 的情况下也能自暴露端口状态定制status.customStatusready取自status.numberReadydesired取自status.desiredNumberScheduled对外展示为Ready: ready/desired摘要健康策略status.healthPolicy综合numberReady、desiredNumberScheduled、currentNumberScheduled、updatedNumberScheduled与observedGeneration当desired ready updated current且观测代数不小于期望代数时判定健康可直接被vela status等工具用于健康评估。部署与验证daemon定义随 KubeVela 核心组件默认安装无需额外操作即可使用。若需在本地复现或验证查看定义执行vela def list找到daemon用vela def get daemon查看其完整定义与参数说明references/docgen/def-doc/README.md说明这些示例正是为了配合vela show生成参考文档而内嵌在仓库中的部署应用将本文第一节的 YAML 保存为app.yaml后执行vela up -f app.yaml也可参考vela up -f vela-templates/definitions/usage-examples/application-daemon-with-k8s-update-strategy.yaml体验带滚动更新策略的版本验证结果kubectl get daemonset -n vela-system查看每个节点上的 Pod 是否就绪vela status addon-node-exporter查看组件健康状态与Ready: ready/desired摘要通过暴露的 Service端口9100访问/metrics即可获取节点指标。需要提醒的是daemon 组件面向的是每个节点运行一份的守护进程场景切勿用它承载需要精确副本数或有状态的应用——那应当选择deployment、statefulset等其他 KubeVela 内置组件类型。赞分享云原生DevOps运维微服务【免费下载链接】kubevelaThe Modern Application Platform.项目地址https://gitcode.com/gh_mirrors/ku/kubevela点击查看免费下载相关推荐Kubernetes DaemonSet 基础教程实现节点级守护进程Kubernetes DaemonSet 基础教程实现节点级守护进程 概述为什么需要DaemonSet 在Kubernetes集群中你是否遇到过这样的场文档教程云原生探索TS3AudioBot高级特性循环模式与随机播放算法详解探索TS3AudioBot高级特性循环模式与随机播放算法详解 TS3AudioBot作为一款功能强大的TeamSpeak 3音乐机器人其高级播放控制功能为语Vision Transformers在ClassyVision中的实现从论文到代码的完整教程Vision Transformers在ClassyVision中的实现从论文到代码的完整教程 ClassyVision是一个端到端的PyTorch框架专为上一篇如何做一个跟随键盘丝滑移动的聊天输入框UIViewController-KeyboardAnimation 配合 Auto Layout 实战下一篇JetBrains Maple Mono字体安装使用完全指南解决编程字体显示痛点创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
企业数字化 ERP 产品动态
相关推荐
一杯咖啡的时间完成QQ空间数据恢复:GetQzonehistory说说导出Excel教程 一杯咖啡的时间完成QQ空间数据恢复:GetQzonehistory说说导出Excel教程 【免费下载链接】GetQzonehistory 获取QQ空间发布的历史说说 项目地址: https://gitcode.com/GitHub_Trending/ge/GetQzonehistory
想找回几年前存在QQ空间的一条说说,翻遍页… · 2026/9/28 3:02:20
Spingboot启动预热的实现 启动预热的适用场景启动预热适合以下情况:数据主要来自第三方接口,无法直接从本地数据库读取。第三方接口响应较慢,首次访问容易超时。一个页面需要调用多个第三方接口或逐项查询。数据读取频繁,但变化不频繁。希望服务启动后&… · 2026/9/28 3:40:12
学Java别走弯路,这5个方向最吃香 学Java的人很多,但学明白的人不多。有人学了半年还在写控制台程序,有人一年就能独当一面。差别不在天赋,而在方向。Java生态太庞大了,什么都学等于什么都没学。选对方向,事半功倍。今天盘点当前最吃香的5个Java方向&am… · 2026/9/28 3:32:15
MATLAB雷达信号脉冲压缩仿真:LFM线性调频、匹配滤波与距离分辨率实现 简介:这套Matlab仿真工具完整呈现雷达信号脉冲压缩过程,从线性调频(LFM)信号生成、目标回波仿真到匹配滤波压缩处理均有可运行代码支撑,面向电子信息工程、计算机、数学等专业学生,适用于课程设计、期末大作… · 2026/9/27 0:00:01
汕头网站建设制作厂家避坑指南:5大注意事项救急 汕头网站建设制作厂家避坑指南:5大注意事项救急 改个需求建站公司拖一周,这种憋屈事我见得太多了。 很多汕头老板找本地建站团队,签合同前看着方案挺美,一上线就变脸。 今天不聊虚的,直接拆解找 汕头网站建设制作厂家 时的5个核心 注意事项… · 2026/9/27 0:00:01
多模态虚假新闻检测实战:BERT+ResNet双塔与对比学习 简介:基于PyTorch的多模态虚假新闻检测项目完整代码包,面向自然语言处理与计算机视觉交叉方向的开发者、科研人员及毕业设计选题者,解决社交媒体中文本与图像联合识别虚假新闻的问题。系统以BERT预训练模型提取文本语义特征,以Res… · 2026/9/27 0:00:01
制作网页比较方便的软件怎么选?一文搞懂避坑指南 制作网页比较方便的软件怎么选?一文搞懂避坑指南 很多老板一上来就问:做个网站多少钱?但我反问他:你的域名买了吗?服务器租了吗?他一脸懵。这就是典型的“域名服务器搞不懂”。别急,今天咱们不聊虚的,直接 一文搞懂 那些让你头秃的技术名词。… · 2026/9/28 0:00:06
婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 婚恋网站实战案例:避开3个高价坑,省钱50%还能跑赢流量 找婚恋网站建站公司,最怕的就是被坑高价。很多同行跟我吐槽,报价单上写得模棱两可,功能栏里全是“高级定制”、“专属UI”,结果落地全是套壳。今天不聊虚的,直接甩几个我经手的 实战案例… · 2026/9/28 0:00:19
济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 济南做网站多少钱:3个案例拆解,防黑源码下载全攻略 上周济南一个做建材的老板找我,脸都绿了。他的官网首页弹出了赌博广告,后台被植入了挖矿脚本。他慌得问我:“网站被黑挂马不知道怎么办?能不能直接找之前的外包公司要源码下载,看看哪里被动了手脚?… · 2026/9/28 0:00:25