我正在研究一项任务,我需要设计一个ML管道,用于Kubernetes
上的模型再训练和推理
我读了一些文章,看了一些教程,在它们的帮助下,我创建了2个应用程序,如下所述
- 对于模型再训练,我已经安排了一个CronJob (
Flask App #1
) 对于推理,我已经创建了一个单独的flask应用程序(
Flask App #2
)我不知道我们如何将最新训练的模型从CronJob
转移到推理瓶应用程序
我是Kubernetes的新手,任何建议都会有很大的帮助
我们可以利用Google Persistent Disk,Kubernetes VolumeandKubernetes Persistent Volume Claim
我尝试复制一个场景,其中Cronjob每次创建Pod时都会用当前时间和日期更新文本文件。然后,我在Cronjob之外创建了一个单独的Pod来访问这个文本文件,并且成功了。以下是我所遵循的步骤,
-
使用以下gcloud命令在GCP上创建一个标准持久磁盘,
gcloud compute disks create pd-name --size 500G --type pd-standard --zone us-central1-c
-
然后使用上面的PD和一个Persistent Volume Claim创建一个Kubernetes Persistent Volume,以便pod可以使用以下配置请求在Persistent Volume上的存储,
config.yaml:
apiVersion: v1
kind: PersistentVolume
metadata:
name: pv
spec:
storageClassName: "test"
capacity:
storage: 10G
accessModes:
- ReadWriteOnce
claimRef:
namespace: default
name: pv-claim
gcePersistentDisk:
pdName: pd-name
fsType: ext4
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pv-claim
spec:
storageClassName: "test"
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 10G
- 使用PVC配置部署一个Cronjob,它使用以下配置将当前时间和日期写入存储在PV上的文本文件中,
Cronjob.yaml:
apiVersion: batch/v1beta1
kind: CronJob
metadata:
name: cron
spec:
schedule: "*/1 * * * *"
jobTemplate:
spec:
template:
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: pv-claim
containers:
- name: container
image: nginx
volumeMounts:
- mountPath: "/usr/data"
name: pv-storage
command:
- /bin/sh
- -c
- date >> /usr/data/msg.txt
restartPolicy: OnFailure
Configure a Pod to Use a PersistentVolume for Storage更多信息。
- 使用以下配置部署具有相同PVC配置的Pod,以检查由Cronjob Pod添加的数据是否通过该Pod可见,
Readpod.yaml:
kind: Pod
apiVersion: v1
metadata:
name: readpod
spec:
volumes:
- name: pv-storage
persistentVolumeClaim:
claimName: pv-claim
containers:
- name: read-container
image: nginx
volumeMounts:
- mountPath: "/usr/data"
name: pv-storage
然后使用kubectl exec命令将shell获取到上述Pod上正在运行的容器上,通过使用以下命令,我们应该能够查看cronjob更新时间和日期的文本文件。
$ kubectl exec -it readpod -- /bin/bash $ cd usr/data $ cat msg.txt
您可以利用上面的概念,并根据您的用例修改配置。