【Kubernetes 013】Volume原理和实际操作详解

DCOS之K8S的volumes PS:转载之ceph集群对接k8s docker本身设计之初是用来执行一个app,抑或是一个应用程序,在其运行结束后,将销毁一切数据,但是这明显不是我们想要的,docker也 想到了这个,因此其本身提供一个-v的参数,用来将外部的存储挂载到container中,用来保存我们的持久化的数据。kubernetes最为其集群 管理工具,自然也想到了这些,而且还提供了更强大的功能,基于其插件化的设计,ku 阅读详情

一个pod内有多个容器,我们知道这些容器是共享网络栈的,但是文件系统却似乎还不能共享?如果一个容器运行了一段时间,崩溃重启了,里面保存的内容都丢失了,这又该如何解决?带着这些疑问我们一起来学习k8s中负责数据存储的组件:volume。

我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。

Docker中的数据保存

docker启动容器,只要容器不被删除其内部的文件不会消失

[root@k8s-node1 ~]# docker run -it -d victor2019/test:v1
e64c2bc31ac04174c1c78f9223e01a2cdec371104c58b74bdfc0a439913bf2d3

之后往容器内写点东西,因为我这个测试镜像是nginx,所以写到主页面便于测试

[root@k8s-node1 ~]# docker exec e64c bash -c "echo hello > /usr/share/nginx/html/index.html"

查看一下容器的docker0网段的ip

[root@k8s-node1 ~]# docker inspect e64c | grep 172
            "Gateway": "172.17.0.1",
            "IPAddress": "172.17.0.2",
                    "Gateway": "172.17.0.1",
                    "IPAddress": "172.17.0.2",

验证下写进去的内容

[root@k8s-node1 ~]# curl 172.17.0.2
hello

然后停掉容器再启动

[root@k8s-node1 ~]# docker kill e64c
e64c
[root@k8s-node1 ~]# docker start e64c
e64c
[root@k8s-node1 ~]# curl 172.17.0.2
hello

容器内的文件一直都还在。

所以直接用docker起容器的话,指定--restart=always就可以保证容器提供持续服务了。

K8s中的数据保存

但是k8s的机制不一样,每个pod都有自己完整的生命周期,即使没有被人为删除,如果pod因为其中某个容器崩溃重启,不仅pod的ip会变,里面所有容器保存的内容也会全部消失

那么有没有一种办法,可以让k8s的pod可以和docker里面的容器一样,除非是被人为删除,不然即使重启里面保存的东西一直都在。我们这一节要学习的volume就是为了解决这个问题而引入的。

需要注意,docker中也有volume的概念,不过docker中的volume是容器的内容在宿主机磁盘的持久化,即使容器删除也会一直在,和我们下一节要学习的PVC有点像,但是和这里k8s的volume是两个东西,要注意区分

k8s中的volume

volume就是一个可以被pod中所有容器使用的公共文件夹,每个容器可以将这个公共文件夹挂载到本容器内的一个目录(不同容器的目录可以不同),这样pod内容器就可以互相交换数据。volume的生命周期和pod一致,所以不管pod重启多少次volume内的内容和挂载目录都不会改变,但是如果pod被终止volume就会跟着消失。

注意这里的重启是指因为容器崩溃导致的重启,而不是手动删除pod然后因为重启策略而进行的重启

k8s支持很多种volume的类型,官方在官网中给出几十种媒介可供使用。其中的configMap和secret上一节我们已经接触过,这一节我们选其最常用的emptyDir和hostPath再来学习下。

实际操作

以下所有yaml文件托管在我的Github仓库

emptyDir操作

当一个pod被分配到node时,一个emptyDir volume首先被创建,并且其生命周期和pod一样长。正如其名字表示的那样,emptyDir一开始是空的,pod中的所有容器都可以在里面进行读写。如果pod在node上被删除,emptyDir中的数据也会被永久删除。

容器崩溃不会将pod从node上删除,而只是重启,所以emptyDir对容器崩溃来说是安全的

emptyDir通常用于声明一些临时空间,存放一些临时文件,尤其是多容器配合操作的时候。或者是容器从崩溃恢复时候的一些checkpoint。

两个配置字段在pod.spec.volumes.emptyDir中声明

字段类型说明
mediumstring默认是空字符串表示硬盘,还可以是Memory表示内存
sizeLimitstring默认是nil表示不指定大小

通过下面这个yaml文件test-volume-emptydir.yaml来创建一个Deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-volume-emptydir
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test-volume-emptydir
    spec:
      containers:
        - name: mynginx
          image: mynginx:v2
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: test-emptydir
        - name: myalpine
          image: alpine
          command: ["ping","8.8.8.8"]
          volumeMounts:
            - mountPath: /emptydir
              name: test-emptydir
      volumes:
        - name: test-emptydir
          emptyDir: {}

其中emptyDir: {}表示用默认配置,也就是不声明大小的硬盘空间。

创建成功以后进入myalpine容器,往emptyDir绑定的目录写入文件,之后再访问另一个mynginx容器时被显示

[root@k8s-master volume]# kubectl apply -f test-volume-emptydir.yaml
deployment.extensions/test-volume-emptydir created
[root@k8s-master volume]# kubectl get pod -o wide
NAME                                    READY   STATUS      RESTARTS   AGE   IP             NODE        NOMINATED NODE   READINESS GATES
test-volume-emptydir-6bf8d675fc-ds2jx   2/2     Running     0          15m   10.244.1.117   k8s-node1   <none>           <none>
[root@k8s-master volume]# kubectl exec test-volume-emptydir-6bf8d675fc-ds2jx -c myalpine -it -- /bin/sh -c "echo hello emptydir > /emptydir/index.html"
[root@k8s-master volume]# curl 10.244.1.117
hello emptydir

说明因为emptyDir的引入一个pod内的容器可以共享同一个存储卷。

hostPath操作

hostPath是将node中的文件或目录挂载成为pod的volume。

这里看起来和docker里面的volume很像,但是要注意这里node上的内容并不会持久保存,要注意区分

除了node本地的文件系统,还可以使用NFS或者MFS这种网络存储。只要是能被node锚定的存储设备都可以被hostPath绑定,所以hostPath的使用范围是非常广泛的。

两个配置字段在pod.spec.volumes.hostPath中声明

字段类型说明
pathstring必填,node上的目录
typestring见下面单独表格

其中可选的type字段可选如下,摘自官方文档

ValueBehavior
Empty string (default) is for backward compatibility, which means that no checks will be performed before mounting the hostPath volume.
DirectoryOrCreateIf nothing exists at the given path, an empty directory will be created there as needed with permission set to 0755, having the same group and ownership with Kubelet.
DirectoryA directory must exist at the given path
FileOrCreateIf nothing exists at the given path, an empty file will be created there as needed with permission set to 0644, having the same group and ownership with Kubelet.
FileA file must exist at the given path
SocketA UNIX socket must exist at the given path
CharDeviceA character device must exist at the given path
BlockDeviceA block device must exist at the given path

使用hostPath需要注意两点:

  • 因为不确定pod会被分配到哪个node,所以所有的可能被分配pod的node都需要满足hostPath需要满足的条件
  • 当k8s按照计划添加资源感知调度时,无法考虑hostPath使用的资源
  • 要注意权限设置,node上的目录需要有kubelet的操作权限

通过下面的yaml文件test-volume-hostpath.yaml创建一个deployment

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: test-volume-hostpath
spec:
  replicas: 1
  template:
    metadata:
      labels:
        app: test-volume-hostpath
    spec:
      containers:
        - name: mynginx
          image: mynginx:v2
          ports:
            - containerPort: 80
          volumeMounts:
            - mountPath: /usr/share/nginx/html
              name: test-hostpath
        - name: myalpine
          image: alpine
          command: ["ping","8.8.8.8"]
          volumeMounts:
            - mountPath: /hostpath
              name: test-hostpath
      volumes:
        - name: test-hostpath
          hostPath:
            path: /tmp/hostpath
            type: DirectoryOrCreate

这里将每个node的/tmp/hostpath目录做为volume,如果该目录不存在会被创建

创建以后发现pod被分配到k8s-node1上

[root@k8s-master volume]# kubectl apply -f test-volume-hostpath.yaml
deployment.extensions/test-volume-hostpath created
[root@k8s-master volume]# kubectl get pod -o wide
NAME                                    READY   STATUS      RESTARTS   AGE    IP             NODE        NOMINATED NODE   READINESS GATES
test-volume-hostpath-7bb449ff9b-82gl5   2/2     Running     0          8s     10.244.1.118   k8s-node1   <none>           <none>

去node上看,果然自动创建了一个目录。因为是用root用户运行的kubelet,所以这里目录的owner是root

[root@k8s-node1 ~]# cd /tmp
[root@k8s-node1 tmp]# ll
total 0
drwxr-xr-x. 2 root root 6 May 11 21:06 hostpath

往里面写点东西

[root@k8s-node1 tmp]# cd hostpath/
[root@k8s-node1 hostpath]# echo hello hostpath > index2.html

然后去pod上查看一下

[root@k8s-master volume]# curl 10.244.1.118/index2.html
hello hostpath
[root@k8s-master volume]# kubectl exec test-volume-hostpath-7bb449ff9b-82gl5 -c myalpine -it -- /bin/sh -c "cd /hostpath;ls -al;cat index2.html"
total 4
drwxr-xr-x    2 root     root            25 May 11 13:10 .
drwxr-xr-x    1 root     root            33 May 11 13:06 ..
-rw-r--r--    1 root     root            15 May 11 13:10 index2.html
hello hostpath

成功在pod的两个容器内都找到了相同的文件。

总结

总结下volume的一些知识点

  • 和docker的volume有本质区别,不能混淆
  • volume的周期和pod一样,容器的崩溃导致的pod重启不会影响volume的内容
  • pod的删除会将volume的内容永久删除
  • emptyDir用来存储一些临时内容,和node上的存储无关
  • hostPath用来将node的文件系统做为volume,每个可能被分配的node都要准备好条件,尤其要注意kubelet的运行权限

volume虽然给pod内容器的文件共享带来很多便利,但是这只是解决了一个痛点。如果我想pod即使被删除其容器的内容也依然会被持久化,又该如何做呢?下一节要学习的Persistent Volume来对volume进行一次升级。

Docker 与 K8S学习笔记(十八)—— Pod的使用 Python微信订餐小程序课程视频 https://edu.youkuaiyun.com/course/detail/36074 Python实战量化交易理财系统 https://edu.youkuaiyun.com/course/detail/35475 Pod 是一组紧密关联的容器集合,它们共享IPC、Network和UTS namespace,是 Kubernetes 调度的基本单元。Pod 的设计理念是支持多个容器在一个 Pod 中共享网络和文件系统,可以通过进程间通信和文件共享这种简单高效的方式组合完成服务。 一、Pod 阅读详情

相关推荐

Agent Runtime 正在商品化:Session-as-Event-Log 架构解析

Agent runtime 是支撑智能体执行的底层基础设施,其核心原理在于将状态管理、执行调度与安全隔离分层解耦。随着 Anthropic Managed Agents 和 AWS Bedrock AgentCore 等方案落地,'Session as Event Log' 已成为生产级 agent 的事实标准——它通过结构化事件流替代脆弱的 context window 状态维持,实现抗故障恢复与全链路可追溯;Harness 作为无状态执行器提升弹性与模型无关性;Sandbox 则以 credential

weixin_30314793的博客 324

k8s之Pod容器共享Volume

在实际生产中,经常会出现同一pod内的多个容器共享Pod级别的存储卷Volum情况。。Volume可以被定义为各种类型,多个容器各自进行挂载操作,将一个Volume挂载为容器内部需要的目录即可。 例如: Pod内包含两个容器:tomcat和busybox,在Pod级别设置Volume “app-logs”,用于tomcat向其中写日志,busybox读取日志文件。 kubectl create -f pod-volume.yaml pod-volume.yaml文件内容如下: apiVersion: v1

任我行的博客 4003

这就说明,像 Kubernetes 这样构建出来的、基于本地存储的 Volume,完全可以提供容器持久化存储的功能。 所以,像 StatefulSet 这样的有状态编排工具,也完全可以通过声明 Lo

29 PV、PVC体系是不是多此一举?从本地持久化卷谈起 # 在node-1上执行 mkdir /mnt/disks for vol in vol1 vol2 vol3; do mkdir /mnt/disks/$vol mount -t tmpfs $vol /mnt/disks/$vol done [root@dock02 ~]# df | grep mnt vol1 938812 0 938812 0% /m...

zhaoyangjian724的专栏 248

k8s集群StatefulSets的Pod调度查询丢失问题?

考点之你了解k8s集群StatefulSets的Pod调度查询丢失问题吗?k8s集群中StatefulSet管理的Pod已经完成调度并启动,为什么还是无法查询Pod 的 DNS 命名?

囧么肥事 663

更新3ds时和用读卡器读取传输文件操作不当导致的tf卡损坏无法读取需要格式化时出现的问题以及不想丢失文件并且修复的详细解决方法

前言: 不小心按了同意更新而且tf/sd卡损坏导致了3ds打开后都是出现 Anerror has occurred:(红色的) Failed to apply 1 FIRM patch(es). Press any button to shotdown 这样的画面,按了任意键后就关机,我找了很多资料和大佬的回答解决了这些问题,现在记录一下。 一.不小心按了更新导致上述的画面 原因:是因为系统升级了,但是里面的Luma3DS还没有更新,属于是更新了但没有完全更新的状态。 **修复方法** 1.首先请按

give_me_fish的博客 1万+

企业微信/飞书/钉钉扫码连WiFi保姆级教程(附访客授权技巧)

本文提供了一份企业微信、飞书、钉钉扫码连接WiFi的实战部署教程。通过集成标准Radius协议与OAuth 2.0,企业可实现基于身份的无密码网络认证,并详细介绍了访客授权、权限分级等精细化管理技巧,有效提升无线网络的安全性与员工体验。

t4y5u6i7o的博客 1194

docker volume原理

docker volume 原理

lixia0417mul2的博客 819

Cadence Allegro16.6怎么导出器件引脚信息的报告

当我们需要用到器件的引脚相关信息时,可以利用allegro中的reports这个功能导出器件的相关信息。下面是具体的操作步骤。

suyucheng66的博客 5719

固定docker容器IP方法

docker默认有4种网络模式,详细查曾经写的 "docker几种网络模式" docker run 新建并启动容器时,不指定网络默认,默认是使用桥接模式,容器内部IP是通过DHCP获取,docker容器重启后,其容器IP会变化。有没有办法来固定容器内的IP呢?答案是肯定的。可以使用脚本或工具来固定容器内部IP。 一、如何查看容器内部IP?: 方法一: 通过docker inspect查看容器的详细信息来查看,可以使用grep来匹配查询 [root@localhost ~]# docker in.

阿蔡的博客 7053

SLG大地图实战:从Tilemap到Shader的地表渲染与数据分层架构

本文深入探讨了SLG大地图开发中的关键技术挑战与解决方案,包括Tilemap系统的深度改造、地表渲染的Shader优化以及数据分层架构设计。通过实战案例,展示了如何实现视觉表现丰富、性能开销可控的SLG大地图,特别适合Unity开发者和游戏技术美术参考。

weixin_28693309的博客 517

微信小程序 - 实现大文件上传分片/切片+本地选择文件上传超大文件,小程序大文件切片上传+断点续传+上传进度条+失败自动重传完整运行示例源码,支持图片、视频、文档各种文件(支持上传单个文件或批量上传)

微信小程序实现大文件上传,实现分片大文件上传,微信小程序 分片 断点续传 大文件上传,微信小程序实现大文件上传 分片上传 进度条,小程序文件分片上传,微信小程序如何上传很大的文件,在选择文件后,按指定大小将文件切割成独立的文件片,并逐片上传,uniapp 微信小程序上传大文件如何切片,微信小程序实现大文件分片上传、断点续传、秒传,解决大文件上传问题,大文件上传如何做断点续传,微信小程序wx.uploadFile,小程序上传视频,小程序上传文档,实现大文件上传(切片上传)实现大文件上传到服务器教程,支持批量多

🏆 前端领域优质创作者 1万+

Kubernetes实战系列文章(二) 之 K8S集群部署应用示例

本文介绍了在K8s集群中部署应用的三种方式:命令行创建Nginx应用并暴露NodePort服务;使用YAML声明式部署Tomcat应用;部署Dashboard可视化管理平台。均包含资源创建、验证及访问方法,展示了K8s的基本操作流程。

野熊佩骑的博客 206

VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文

VB.net:VB.net编程语言学习之基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用(启动SolidWorks代码/直接驱动模型代码/路径下模型驱动代码/创建两个文件夹对话框代码/重新生成三维图代码/导出工程图代码)之详细攻略 目录 基于VS软件利用VB.net语言实现对SolidWorks进行二次开发的案例应用 1、调用SW的模型,并进行参数修改 1.1、VB按钮之SW的三维零件之间切换思想 1.2、调用SW 2、基础案例经验 2.1、设计SW的拉

头部AI社区如有邀博主AI主题演讲请私信—心比天高,仗剑走天涯,保持热爱,奔赴向梦想!低调,专注,谦虚,自律,反思,成长,还算比较正能量的博主,公益免费传播…内心特别想在AI界做出一些可以推进历史进程影响力的技术(兴趣使然,有点小情怀,也有点使命感呀 3031

k8s笔记4 ---数据存储详解

k8s的存储有很多种方式**** 1.使用指令在目录创建 指定在目录下的所有文件都会被用在ConfigMap里面创建一个键值对,键的名字就是文件名,值就是文件的内容 kubectl create configmap lqhcm1 --from-file=…/configmap/ -n space01 2.使用文件创建 kubectl create configmap lqhcm2 --from-file=…/configmap/file3.txt -n space01 3.使用字面新建 kubectl

weixin_42765975的博客 561

(二)使用VS2022克隆下载C++自制植物大战僵尸游戏教程

本文将介绍如何使用VS2022克隆下载《植物大战僵尸C++自制版本》。Gitee项目地址:Gitee仓库地址Github项目地址:Github仓库地址游戏官网地址(下载可直接运行)游戏官网。

尔灵尔亿的博客 4927

实战|2026美团&大众点评餐饮数据抓取:Playwright/Selenium反爬全攻略

核心结论:2026年美团&大众点评的反爬核心是“多维度风控”,需组合使用“住宅IP+设备指纹伪装+真人行为模拟+动态验证处理”,Playwright是最优工具,Selenium仅作为补充。效率优化:单机爬取速度建议控制在“每小时500-800条”,避免高频请求触发风控;分布式爬取需确保每个节点使用独立住宅IP,且行为轨迹不一致。扩展方向集成WASM解密工具,破解2026年美团的Token加密;用AI识别动态点选验证,提升验证通过率;对接大数据平台,对抓取的餐饮数据进行可视化分析。

专注于Python爬虫开发,分享爬虫技巧、项目实战与反爬经验,使用Scrapy、BeautifulSoup等工具,解决数据抓取难题。 2460

K8s 持久化存储:PV 与 PVC 配置指南

你是否还在为 K8s 容器重启后数据丢失而烦恼?是否在集群迁移时因存储配置不兼容而焦头烂额?本文将系统讲解 Kubernetes(K8s)持久化存储核心组件 PV(Persistent Volume,持久卷)与 PVC(Persistent Volume Claim,持久卷声明)的设计原理与实战配置,读完你将掌握: - PV/PVC 的生命周期管理与权限隔离机制 - 5 种存储类型的 PV 配置...

gitblog_00461的博客 1167

visio安装包

Microsoft Office Visio 是一款专业的制图软件。利用经过更新的形状、协作工具和数据链接图表,创建专业级图表以简化复杂的信息。

QtScrcpy 使用教程:3 分钟把手机投到电脑上,键鼠直接操控

把手机屏幕实时投到电脑上,再用键鼠直接操控——QtScrcpy 做的就是这件事:Android 投屏加实时控制,覆盖 Windows、macOS、Linux,无需 root,手机上不装任何软件。官方给出的指标:30~60fps、1080p 以上画质、延迟 35~70ms、启动后 1 秒内看到首帧。本文带你跑通首次连接,再用键位映射把键盘变成游戏手柄,最后收一张故障速查表。 ## QtScrcpy

gitblog_00364的博客 452

OV9734 DATASHEET,完整规格书

OV9734完整规格书,包括电气参数,尺寸规格,寄存器配置表等

SAP B1中文培訓教材_SDK

公司内部培训资料,对开发工具 ,DIAPI, UIAPI,Add-ON有详细解说

部署Rasa框架到Kubernetes集群并分配GPU资源

Rasa是一个对话式的AI框架,用于创建基于上下文的智能语音助手。这一节我们来看看如何将其部署到k8s集群中,并试一下其自带的模型。 我是T型人小付,一位坚持终身学习的互联网从业者。喜欢我的博客欢迎在csdn上关注我,如果有问题欢迎在底下的评论区交流,谢谢。 文章目录Rasa常规安装命令行操作API操作部署到k8s准备自定义docker镜像DeploymentServiceAPI操作总结 Rasa Rasa是基于python的AI框架,可以对用户提供的数据进行训练生成模型,以达到智能语音助手的目的。更多

T型人小付的博客 2221

android 蓝牙通讯demo

android 下蓝牙通讯demo,实现了发现蓝牙,使能蓝牙,通过蓝牙发送消息。

CentOS 7使用K8s部署模型 CPU 和 GPU 双模式环境

本文介绍了在CentOS 7服务器上使用K8s部署Ollama工具运行AI模型的方法。Ollama由llama.cpp引擎、GGUF格式管理和命令行工具组成,适合纯CPU环境部署,特别适合个人或小团体低成本使用。文章对比了虚拟机和物理机部署的优劣,建议有GPU设备时再考虑GPU加速方案,并提供了详细的Docker部署步骤和模型加载方法。同时指出Ollama虽易用但性能有限,不适合企业商用环境,推荐后续可尝试基于Vllm的商用部署方案。文中包含具体操作命令和配置参数,为读者提供了实践参考。

别人笑我太疯癫,我笑他人看不穿。 636

DeepCAD如何表示一个CAD模型?6种命令与16个参数全解读

DeepCAD(ICCV 2021)用一套"命令 + 参数"的离散化向量序列来表示 CAD 模型:每个 token 由 1 个命令 ID 和 16 个参数槽组成,整条建模序列最长 60 步、共 10 次拉伸。读懂这套表示,就看懂了 DeepCAD 如何把"草图→拉伸"的 CAD 建模过程变成神经网络可学习的语言。 [![DeepCAD项目示意图:Sketch 1经Extrude 1生成实体后,S

gitblog_00343的博客 169

Flyte 2 分布式核心服务 Helm Chart 实战指南:flyte-core 组件架构与配置详解

> 本指南以仓库中 [charts/flyte-core/README.md](https://link.gitcode.com/i/6b6700e22e74fc510ce55905e12707ca) 为骨架,结合 [values.yaml](https://link.gitcode.com/i/331d6dd9dfeeb5d641fd5112894dc3d1)、模板实现与源码,系统讲解 Flyt

gitblog_00602的博客 447

Rook 中配置 Ceph RBD Mirroring:跨集群异步复制与灾备实战指南

本文是一份基于 Rook 存储编排框架,在 Kubernetes 上为 Ceph 块存储(RBD)配置跨集群异步镜像复制(RBD Mirroring)的完整实战指南。内容覆盖灾备(Disaster Recovery)场景下的镜像池创建、对端引导(Bootstrap Peers)、rbd-mirror 守护进程部署、CSI 复制 sidecar 启用、VolumeReplication 自定义资源使

gitblog_00600的博客 749

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs

2018年3月29日 11:02:33 关于docker分享之分布式存储 glusterfs 经典语录: 实际实验搭建:前提 是要保证 一个 /data目录不和根分区在同一个磁盘!1、centos7安装glusterfs参考链接:https://wiki.centos.org/SpecialInterestGroup/Storage/gluster-Quickstart#To Use the ...

weixin_34211761的博客 302

Open-Meteo:构建企业级开源自托管天气数据平台的完整指南

Open-Meteo 是一款革命性的开源天气数据服务平台,为开发者提供了构建私有天气API的完整技术栈。与传统商业天气API不同,Open-Meteo 采用完全透明的开源架构,允许用户自主托管、深度定制和扩展气象数据处理能力。该平台通过高效的数据压缩算法和优化的存储格式,实现了毫秒级响应时间,同时保持数据源的完整可追溯性。作为自托管解决方案,Open-Meteo 消除了API调用限制和数据隐私担忧

gitblog_00947的博客 928

GoRaven Agent核心原理揭秘:Eino框架+子Agent协作如何完成多步骤任务拆解与执行

GoRaven 是一款开源的团队 AI Agent 平台,基于字节跳动开源的 Eino 框架构建 Agent 运行时。它不只是聊天机器人——Agent 能读取文件、执行命令、调用 API,并通过"主 Agent 拆解任务 + 子 Agent 分工执行"的模式,把复杂需求一步步变成真实结果。本文带你从零看懂它内部的任务拆解与执行机制。 ## 一、GoRaven 是什么:能干活的 AI 数字员工

gitblog_01001的博客 158
上一篇: 【Kubernetes 012】Secret原理和实际操作详解
下一篇: Centos7搭建NFS文件共享服务器以及客户端连接
T型人小付
博客等级 码龄7年 433粉丝 210原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值