基于 Helm 部署 TensorFlow Inception 模型服务:incubator/tensorflow-inception Chart 实战指南

发布时间:2026/10/7 2:10:08

基于 Helm 部署 TensorFlow Inception 模型服务:incubator/tensorflow-inception Chart 实战指南 【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载TensorFlow 是一个使用数据流图进行数值计算的开源软件库。本指南以当前仓库 incubator/tensorflow-inception 目录下的 Chart 为核心讲解如何用 Helm 将一个预训练的 Inception 图像分类模型服务部署到 KubernetesChart 会创建一个对外暴露的 LoadBalancer Service 与一个 Deployment运行 TensorFlow Serving 的 model server并用 inception_client 提交图片完成在线推理。读完本文你将掌握该 Chart 的安装方式、全部可配置参数、values.yaml 覆写方法以及从模型服务到客户端推理的完整调用链。注意本 Chart 与整个 helm/charts 仓库一样已于 2020 年 11 月 13 日起停止更新参见仓库根目录 README.md 与 incubator/README.mdChart.yaml 中deprecated: true亦明确标注其已弃用。以下内容用于了解其设计与运行原理生产环境请评估维护状态。一、Chart 概述与部署目标该 Chart 的名字是tensorflow-inception版本为0.4.3对应appVersion: 1.4.0出自 Chart.yaml。它的设计初衷是简化 TensorFlow Serving 官方的 Inception 部署文档serving_inception.html让开发者只需一条helm install命令就能获得可用的 Inception 图像识别服务。Chart 部署后会在集群中创建以下资源见 tensorflow-inception.yaml1 个 Deployment默认运行 1 个副本replicas: 1滚动更新策略RollingUpdate容器启动后直接执行tensorflow_model_server加载 Inception 导出模型1 个 Service默认类型为LoadBalancer将9090端口servicePort转发到容器的9090端口containerPort供集群外部访问所有资源通过component: release-name-tensorflow-inception标签作为 Deployment 与 Service 之间的选择器纽带这也是 README 中「1 x TensorFlow inception model server on an external LoadBalancer」的含义。从模板可以推断Service 与 Deployment 都带上了helm.sh/created注解以及heritage、release、chart、component四类标准标签便于 Helm 与 Kubernetes 追溯资源来源。二、安装 Chart2.1 添加仓库并安装按 README.md 中的安装说明需要先添加 incubator 仓库再以my-release作为 release 名安装$ helm repo add incubator http://storage.googleapis.com/kubernetes-charts-incubator $ helm install --name my-release incubator/tensorflow-inception需要注意的是README 中给出的仓库地址为历史地址仓库当前归档说明incubator/README.md建议使用helm repo add incubator https://charts.helm.sh/incubator并配合helm search repo incubator检索。这是 Helm v2 风格的--name安装写法若使用 Helm v3请改用helm install my-release incubator/tensorflow-inception形式。2.2 安装后的第一件事安装完成后模板 NOTES.txt 会提示用户LoadBalancer 的 IP 可能需要几分钟才能就绪可以执行以下命令观察 Service 状态并拿到对外 IPexport INCEPTION_SERVICE_IP$(kubectl get svc --namespace namespace my-release-tensorflow-inception -o jsonpath{.status.loadBalancer.ingress[0].ip})然后用宿主机上挂载的图片目录启动 inception_client 容器提交推理请求echo docker run -v ~/Downloads:/downloads quay.io/lachie83/inception_serving /serving/bazel-bin/tensorflow_serving/example/inception_client --server$INCEPTION_SERVICE_IP:9090 --image/downloads/dog.jpg三、可配置参数一览README 给出了完整的参数表结合 values.yaml 的默认值实际可配置项如下ParameterDescriptionDefaultimage.repository容器镜像名称quay.io/thomasjungblut/tfs-inceptionimage.tag容器镜像标签tfs-1.8.0-cpuimage.pullPolicy镜像拉取策略来自 values.yamlIfNotPresentreplicask8s Deployment 副本数1componentk8s selector 标签键值tensorflow-inceptionresources为 Pod 分配和允许的资源{}servicePortk8s Service 对外端口9090containerPort容器监听端口9090serviceTypeService 类型来自 values.yamlLoadBalancerenv.ldLibraryPathLD_LIBRARY_PATH环境变量值来自 values.yaml/usr/lib/x86_64-linux-gnu/3.1 通过--set指定参数使用--set keyvalue[,keyvalue]参数覆盖任意配置项例如$ helm install --name my-release --set image.tagtfs-1.8.0-gpu --set replicas2 incubator/tensorflow-inceptionNote如需 GPU 版本请使用image.tagtfs-1.8.0-gpu。模板 tensorflow-inception.yaml 中image由{{ .Values.image.repository }}:{{ .Values.image.tag }}拼装因此切换 tag 即可切换到 GPU 镜像。3.2 通过 values.yaml 文件覆写更推荐的做法是编写独立的 YAML 文件并在安装时传入$ helm install --name my-release -f values.yaml incubator/tensorflow-inception-f指定的文件会与 Chart 内置的 values.yaml 合并未覆写的项继续使用默认值。四、values.yaml 默认值逐项解读默认 values.yaml 内容如下其中注释部分揭示了资源声明的推荐写法包括 GPU 资源serviceType: LoadBalancer servicePort: 9090 containerPort: 9090 component: tensorflow-inception replicas: 1 image: repository: quay.io/thomasjungblut/tfs-inception tag: tfs-1.8.0-cpu pullPolicy: IfNotPresent env: ldLibraryPath: /usr/lib/x86_64-linux-gnu/ resources: {} # limits: # nvidia.com/gpu: 1 # cpu: 100m # memory: 256Mi # requests: # nvidia.com/gpu: 1 # cpu: 100m # memory: 256Mi4.1 resources 的写法resources默认是空对象{}。模板通过{{ toYaml .Values.resources | indent 12 }}原样渲染进 Pod 规格因此可按 Kubernetes 标准格式声明 limits 与 requests。若使用 GPU 镜像可按 values.yaml 注释中的方式申请nvidia.com/gpu: 1资源。4.2 env.ldLibraryPath 的作用模板 tensorflow-inception.yaml 中有一段条件渲染逻辑{{- if .Values.env.ldLibraryPath }} env: - name: LD_LIBRARY_PATH value: {{ .Values.env.ldLibraryPath }} {{ end }}也就是说只要env.ldLibraryPath非空容器就会获得LD_LIBRARY_PATH/usr/lib/x86_64-linux-gnu/环境变量用于在部分系统环境下正确加载 TensorFlow 所需的动态链接库将该值置空则可跳过这一环境变量注入。五、模板源码解析Deployment 与 Service 是怎么生成的核心模板 tensorflow-inception.yaml 由两个 Kubernetes 资源组成理解它能帮助你在排障或二次开发时精准定位问题。5.1 Deployment 的关键字段副本数与策略replicas: {{ default 1 .Values.replicas }}strategy.type: RollingUpdate升级时不会中断服务镜像与启动命令容器镜像为repository:tag拼装imagePullPolicy取自image.pullPolicy启动命令通过 shell 执行tensorflow_model_server --port{{ .Values.containerPort }} --model_nameinception --model_base_path/serving/inception-export即由 TensorFlow Serving 的 model server 加载/serving/inception-export目录下的inception模型并监听containerPort默认 9090就绪探针配置了readinessProbe使用 TCP 探针检测containerPortinitialDelaySeconds: 15、timeoutSeconds: 1——容器启动后 15 秒才开始探测确保模型加载完成前不会被流量击中资源resources由toYaml渲染如前所述。5.2 Service 的关键字段端口映射port: servicePort对外→targetPort: containerPort容器内选择器selector.component release-name-component与 Pod 模板标签一一对应类型type: {{ .Values.serviceType }}默认LoadBalancer。5.3 命名辅助函数_helpers.tpl 定义了命名模板tensorflow-inception.name默认取.Chart.Name可用nameOverride覆盖并截断到 24 字符tensorflow-inception.fullname由release-name-chart-name拼接同样截断到 24 字符注释说明这是受 DNS 命名规范中 Kubernetes 名称字段长度限制所驱动并去掉结尾多余的-。因此helm install --name my-release ...后Deployment 与 Service 的实际名称是my-release-tensorflow-inception。六、运行示例用 inception_client 做图像分类README 给出了完整的端到端示例。假设已将图片dog.jpg放到宿主机的~/Downloads目录运行docker run -v ~/Downloads:/downloads quay.io/lachie83/inception_serving /serving/bazel-bin/tensorflow_serving/example/inception_client --server$INCEPTION_SERVICE_IP:9090 --image/downloads/dog.jpg其中-v ~/Downloads:/downloads将宿主机图片目录挂载进客户端容器--server$INCEPTION_SERVICE_IP:9090指向上一节获取的 LoadBalancer 地址--image/downloads/dog.jpg指定待分类图片。模型服务会返回两类输出classes分类标签DT_STRINGoutputs { key: classes value { dtype: DT_STRING tensor_shape { dim { size: 1 } dim { size: 5 } } string_val: golden retriever string_val: cocker spaniel, English cocker spaniel, cocker string_val: clumber, clumber spaniel string_val: tennis ball string_val: Labrador retriever } }scores置信度得分DT_FLOAToutputs { key: scores value { dtype: DT_FLOAT tensor_shape { dim { size: 1 } dim { size: 5 } } float_val: 9.7533788681 float_val: 6.67022132874 float_val: 6.18963956833 float_val: 5.90754127502 float_val: 5.4464302063 } }输出显示模型对这张 dog.jpg 给出的 Top-5 结果中置信度最高的是golden retriever9.75其余依次为可卡犬、克伦伯猎犬、网球和拉布拉多犬——这正是 Inception 模型在 ImageNet 数据集上的典型分类表现。示例末尾的E1028 ... close_transport ... FD shutdown日志是客户端与服务端会话正常结束时的 gRPC 传输层关闭信息属预期输出不影响推理结果。七、小结与注意事项核心成果一条helm install即可在 Kubernetes 上获得「1 个 LoadBalancer Service 1 个 Inception model server Deployment」的完整推理链路客户端用官方inception_serving镜像即可调用参数覆盖既可用--set内联覆盖也可用-f values.yaml文件覆写GPU 场景切换image.tagtfs-1.8.0-gpu并申请nvidia.com/gpu资源源码级佐证Deployment 启动命令、就绪探针、LD_LIBRARY_PATH 注入、命名规则等行为均可从 tensorflow-inception.yaml、_helpers.tpl 与 values.yaml 中直接验证弃用提醒该 Chart 自 2020 年 11 月起不再维护镜像 tag如tfs-1.8.0-cpu与 Helm v2 安装语法均已过时本文内容仅用于理解其设计与工作原理。赞分享【免费下载链接】charts⚠️(OBSOLETE) Curated applications for Kubernetes项目地址https://gitcode.com/gh_mirrors/chart/charts点击查看免费下载相关推荐RKNN-Toolkit2 转换 TensorFlow Inception V3 QAT 量化模型实战指南RKNN Toolkit2 转换 TensorFlow Inception V3 QAT 量化模型实战指南 导读 本文基于 RKNN Toolkit2 仓库中的人工智能推理引擎模型量化模型优化边缘计算开发工具TensorFlow-Tutorials迁移学习实战基于Inception模型的图像分类优化TensorFlow Tutorials迁移学习实战基于Inception模型的图像分类优化 你是否遇到过这样的困境想用深度学习做图像分类却受限于设备性能教程深度学习Kubernetes 上部署 ZooKeeper 集群incubator/zookeeper Helm Chart 实战指南Kubernetes 上部署 ZooKeeper 集群incubator/zookeeper Helm Chart 实战指南 本指南围绕 Helm Chart上一篇GhostTrack 快速上手OSINT 追踪工具实操指南下一篇Islands架构的幕后推手Astro Compiler如何编译client:load等客户端指令创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考
延伸阅读

更多相关文章

2026/10/7 2:10:08

终端编码代理pi:自主执行代码任务的AI Agent实战解析

pi这个词,最近在开发者圈子里有点热。无论是GitHub Trending还是技术流时间线,都能看到有人聊pi、pi agent、pi coding agent这类话题。简单说,pi就是一个跑在终端里的AI编码代理,你给它一句话或一个任务,它就自己完成…

2026/10/7 3:10:10

Spring Boot+Thymeleaf+MySQL搭建新能源科普网站实战指南

我无法按这个标题生成博文。原因很简单:标题里的“带论文文档1万字以上,文末可获取,系统界面在最后面”明显是在推销一套打包好的毕业设计/论文代做服务,也就是把完整的程序源码、数据库、部署配置、万字论文文档打包出售。这类服…

2026/10/7 3:10:10

多线程安全实战:共享状态管理、锁选型与线上排查

直接进入正题。我在一线写并发代码快十年,面试别人问过慢悠悠数不清次数的多线程安全问题,也线上救过不少被并发放倒的服务。每次碰到这类问题,我带头复盘第一句话都是:你觉得自己写的代码没问题,其实是因为还没并行过…

2026/10/7 3:10:10

IDEA插件开发实战:从悬浮提示到点击方法信息卡

昨天有个同事问我:鼠标悬浮到自己项目里的一个方法名上,IDEA 有时会弹一个浮层显示签名,有时却什么都不弹,是不是设置问题?我给他讲了默认悬浮提示的配置,结果聊着聊着发现他真正的需求其实更具体——他想要…

2026/10/7 3:10:10

Linux深度优化与容器化部署:从sysctl到Compose的实践指南

我最近把一台跑了好几个线上服务的Linux主机从头到尾重新做了一遍深度优化,顺手把部署方式从“裸机进程 手工配置环境”整体切换到了容器化。折腾完这两周,最大的感受是:很多系统问题根本不是某一个参数、某一次配置能解决的,而是…

2026/10/7 3:10:10

Docker容器化部署:Spring Boot+MySQL+Redis实战记录

跟着黑马程序员的Java Web课程走到项目部署这一章,很多人都会卡在一个点:本地IDEA里跑得好好好的项目,一旦打包丢到服务器,要么JDK版本对不上,要么数据库连接失败,再要么中文乱码、时区差八小时。这里面的核…

2026/10/7 3:05:10

TRex服务能力解析:从单机流量工具到可集成的测试服务

你在做自动化测试平台或者大规模网络验收的时候,很快就会意识到一个问题:再好的流量发生器,如果只能坐在机房里敲命令行,那它就是一个高级玩具。TRex之所以能在高性能流量工具里站稳脚跟,不只是因为它基于DPDK能打出线…

2026/10/5 6:32:56

Jev+Agent接管浏览器:browser-use实战与jev-ultrafast性能优化

1. 从“Jev”说起:为什么我要把Agent接进浏览器“Jev”这个词最近在圈子里出现的频率越来越高,很多人第一次听到会以为是某个新模型的名字,其实它更像是一种思路——把Jev模型的能力当作底座,通过Agent的方式去接管浏览器&#xf…

2026/10/6 4:01:51

多智能体集群实战:DeepAgents编排、MCP与A2A协议及Skills体系

1. 从"单兵作战"到"集群协同":多智能体编排到底在解决什么问题如果你最近在折腾 Agent 相关的东西,大概率会有一种感觉:单个 Agent 能做的事情,其实很快就摸到天花板了。你给它一个提示词,挂几个工…

2026/10/6 17:46:51

无源低通滤波器设计实战:从RC到LC,手把手教你避开那些坑

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

ESP32免重刷固件:浏览器直接修改NVS键值实现WiFi配置更新

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

SAP HANA查询结果导出CSV:避开乱码、性能与权限的实用指南

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/7 1:05:03

数字后端Placement阶段Density与Congestion控制实战

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

还想了解更多?直接咨询顾问

免费诊断 + 免费方案 + 透明报价。

全国咨询热线400-8866-253
免费获取方案
☎咨询二维码 ☎ ↑