单位部署了k8s,以后的深度学习模型都要在k8s上进行部署了,于是学习了下。
主要参考:
https://medium.com/analytics-vidhya/deploy-your-first-deep-learning-model-on-kubernetes-with-python-keras-flask-and-docker-575dc07d9e76国内也有人写了,应该差不多
https://github.com/robmarkcole/simple-keras-rest-api
需要的知识:docker k8s 深度学习
第一步:制作镜像,并在本地利用docker测试其是否可以正确运行
①首先是requirements.txt:
②其次是最主要的执行文件run_keras_server.py:
simple-keras-rest-api/run_keras_server.py at master · robmarkcole/simple-keras-rest-api · GitHub
注意最后一行改为:
app.run(host='0.0.0.0')
③然后是Dockerfile:
④然后就是构建镜像、启动容器、测试一下,就不细说了,命令如下:
docker build -t keras-app:v02 . -f Dockerfile
docker run -it -p 9000:5000 --name container_test_keras keras-app:v02 /bin/bash(运行并进入容器)
docker run -d -p 10000:10000 keras-app:v02(后台运行)
另起终端,测试
curl -X POST -F image=@dog.png 'http://localhost:9000/predict'
推送到仓库:
docker push
第二步:利用kubectl部署模型
①部署,如果不指定,将会部署到默认的default这个namespace下
kubectl run keras-app --image=你的镜像位置 --port 5000(5000为flask默认端口,除非自己在dockerfile中有指定,不然不要改)
②暴露端口,5000转为80
kubectl expose deployment keras-app --type=LoadBalancer --port 80 --target-port 5000
③查看部署的service
kubectl get service
kubectl describe service keras-app
第四步:测试并调用
curl -X POST -F image=@dog.png 'http://10.102.172.165/predict'
希望能给大家带来帮助。
分享知识,分享进步