(二)GKE上MLOps的Jenkins作业和部署
目录
作业YAML文件
部署YAML文件
文件结构
下一步
在之前的系列文章中,我们解释了如何编写要在我们的Docker容器组中执行的脚本作为 CI/CD MLOps管道的一部分。在本系列中,我们将设置一个Google Kubernetes Engine( GKE )集群来部署这些容器。
本系列文章假设您熟悉深度学习、DevOps、Jenkins和Kubernetes基础知识。
在本系列的上一篇文章中,我们设置了一个GKE集群。在本节中,我们将使用Kubernetes作业和部署。在该项目中,旨在完成任务然后终止的作业将执行诸如模型训练和测试之类的任务。除非您明确终止,否则永远不会结束的部署将使我们的预测API保持活动状态。
作业、服务和部署都声明为YAML文件,与我们定义机密的方式相同。
作业YAML文件
我们来看看处理AutomaticTraining-CodeCommit作业的YAML文件:
apiVersion: batch/v1
kind: Job
metadata:name: gke-training-code-commit
spec:backoffLimit: 1activeDeadlineSeconds: 900ttlSecondsAfterFinished: 60template:spec:containers:- name: code-commitimage: gcr.io/automatictrainingcicd/code-commit:latestenv:- name: gmail_passwordvalueFrom:secretKeyRef:name: gmail-secretskey: gmail_password- name: email_addressvalue: svirahonda@gmail.comrestartPolicy: OnFailure
在上面的文件中:
- kind:明确指出部署类型是“Job”。
- name:定义Kubernetes集群中的作业名称。
- backoffLimit:“1”表示如果失败,作业将再重试一次。activeDeadlineSeconds: “900”表示如果执行时间超过900秒,将终止作业。
- ttlSecondsAfterFinished: "60" 将在成功执行后60秒删除已完成的作业。
注意:如果我们的程序中的某些内容不允许它结束,则上述两个声明可以控制资源使用。
- name: "code-commit" 给容器一个名字
- image: "gcr.io/automatictrainingcicd/code-commit:latest" 指示使用我们GCR注册表中的镜像。
- env:将存储在secrets.yaml文件中的数据作为环境变量传递给我们的容器。
- restartPolicy: " OnFailure" 表示如果容器失败,执行我们作业的pod将重新启动。
部署YAML文件
让我们检查YAML文件中最相关的标签以进行Automatic-Training-PredictionAPI部署。
---
apiVersion: apps/v1
kind: Deployment
metadata:name: gke-apilabels:app: api
spec:replicas: 2selector:matchLabels:app: apitemplate:metadata:labels:app: apispec:containers:- name: apiimage: gcr.io/automatictrainingcicd/prediction-api:latestimagePullPolicy: Alwaysports:- containerPort: 5000env:- name: gmail_passwordvalueFrom:secretKeyRef:name: gmail-secretskey: gmail_password- name: email_addressvalue: svirahonda@gmail.com
---
apiVersion: v1
kind: Service
metadata:name: gke-apilabels:app: api
spec:clusterIP: 10.127.240.120ports:- port: 5000protocol: TCPselector:app: apitype: LoadBalancer
- kind:“Deployment”说明执行类型。
- name:“gke-api”是部署的名称。
- replicas:“2”定义了将执行程序的pod副本数量。
- image: "gcr.io/automatictrainingcicd/prediction-api:latest" 表示使用GCR中的容器镜像。
- imagePullPolicy:“Always”强制容器构建过程从不使用缓存容器。
- containerPort: "5000" 打开容器的5000端口。
- env:“label”通过存储在secrets.yaml文件到我们的容器作为环境变量的信息。
请注意,此文件中还有另一个块——“LoadBalancer”类型的“service”。此服务将通过固定的API地址和套接字将流量从集群内部路由到部署pod。
文件结构
也许您想知道将这些传递给Kubernetes的位置,YAML文件应该保存在.py文件所在的同一目录中,扩展名为.yaml,并推送到相应的存储库。这样,每个存储库都将拥有自己的.yaml文件,该文件将指示Kubernetes如何操作。该AutomaticTraining-PredictionAPI文件结构应如下所示:
你可以找到我们的项目的所有的YAML文件:AutomaticTraining-CodeCommit,AutomaticTraining-DataCommit,AutomaticTraining,单元测试,AutomaticTraining-PredictionAPI和AutomaticTraining接口(可选)。
下一步
我们都准备开始在Kubernetes上进行部署。构建容器并将其推送到GCR后,您可以通过kubectl apply -f pod.yaml从相应应用的目录运行来将应用部署到GKE 。
在接下来的文章中,我们将为这个项目建立Jenkins CI,以便开始建立和自动化我们的MLOps管道。
Jenkins Jobs and Deployments for MLOps on GKE - CodeProject
(二)GKE上MLOps的Jenkins作业和部署相关推荐
- 研发协同平台持续集成Jenkins作业设计演进
源宝导读:Jenkins作为一个开源的持续集成工具,被大家广泛使用.本文将分享,Jenkins在明源云研发协同平台中的运用,以及在其作业设计方面的演进历程. 一.作业设计1.0 起初,为了尽快推出研发 ...
- 管理Jenkins作业配置
在JBoss工具和Developer Studio中,我们在Jenkins中管理许多构建作业. 实际上,对于3.2.x / 4.x和3.3.x / 5.x流,有195个以上的作业. 当我们开始建立明年 ...
- 加速业务交付,从 GKE 上使用 Kubernetes 和 Istio 开始
原文来源于:谷歌云技术博客 许多企业机构正在把全部或部分 IT 业务迁移到云端,帮助企业更好的运营.不过这样的大规模迁移,在企业的实际操作中也有一定难度.不少企业保存在本地服务器的重要资源,并不支持直 ...
- 实操手册:如何在GKE上部署HTTP(S) Load Balancer及容器应用程式
Kubernetes(下文简称 k8s) 代表了 Google 的第三代容器管理系统,仅次于 Borg 和 Omega ,现在已经成为主要的容器平台.GKE 提供了了全套的 k8s 托管服务,将 Au ...
- 二年级计算机课总结,二年级上学期教学总结
二年级上学期教学总结 引导语:以下是百分网小编为大家整理的二年级上学期教学总结,供大家参考学习,欢迎阅读! 总结一 当大地又一次被飘飞的白雪包裹.覆盖,当新年的钟声又一次在耳边响起,2004-2005 ...
- linux 进程间通信 dbus-glib【实例】详解二(上) 消息和消息总线(附代码)
linux 进程间通信 dbus-glib[实例]详解一(附代码)(d-feet工具使用) linux 进程间通信 dbus-glib[实例]详解二(上) 消息和消息总线(附代码) linux 进程间 ...
- Linux上快速搭建Jenkins服务器 实现持续集成开发
http://my.oschina.net/long0419/blog/183299 简介: 持续集成是一种软件开发实践,对于提高软件开发效率并保障软件开发质量提供了理论基础.Jenkins 是一个开 ...
- hadoop emr_在Amazon EMR上运行Hadoop MapReduce作业
hadoop emr 不久前,我发布了如何使用CLI设置EMR群集的信息. 在本文中,我将展示如何使用适用于AWS的Java SDK来设置集群. 展示如何使用Java AWS开发工具包执行此操作的最佳 ...
- 在Amazon EMR上运行Hadoop MapReduce作业
不久前,我发布了如何使用CLI设置EMR群集的信息. 在本文中,我将展示如何使用适用于AWS的Java SDK来设置集群. 展示如何使用Java AWS开发工具包执行此操作的最佳方法是展示完整的示例, ...
最新文章
- Galaxy Release_20.09 发布,新增多个数据上传组件
- JDK、TOMCAT、Ant环境变量设置
- java高级断言_Java之断言
- MySQL的Found_ROWS函数介绍
- Python 常用系统模块整理
- 第五站 使用winHex利器加深理解数据页
- 最新BAT大厂面试者整理的Android面试题目模板,分享PDF高清版
- 华人、华侨、华裔之间究竟有什么区别?
- 中小型企业网络规划设计方案_实战:企业网络系统规划与设计与事项
- 【QT小记】使用QPainter绘制各种基本图形
- 读史使人明智,二混子带你漫画学历史~
- 不要低估实现难度,聊聊当下热议的“元宇宙”是什么?
- bat脚本_更改文件夹访问权限
- 超低延时行情系统的设计方案及实现方案
- 全民社会保障月供制度的客观理由
- 疫情当下,选择代理加盟互联网广告项目的优势
- 关于1 problem (1 error, 0 warnings) 1 error and 0 warnings potentially fixable with the `--fix` 错误
- JavaSE基础 打印杨辉三角
- uniapp(H5) + signalr 制作的简单的卡牌游戏
- 飞腾64核服务器cpu芯片,【今日头条】飞腾64核CPU适配百度昆仑AI处理器:全国产的AI体系登场...