在 Kubernetes 上使用 Flask 搭建 Python 微服务( 六 )


为了运行此服务,我们指示容器使用使用以下命令:
 

  1. python /ums/app.py
 
一旦Dockerfile准备完成,在ums-find-service文件夹中运行以下命令,创建 Docker 镜像:
 
  1. docker build -t glarimy/ums-find-service
     
它会创建 Docker 镜像,可以使用以下命令查找镜像:
 
  1. docker images
     
尝试将镜像推送到 Docker Hub,你也可以登录到 Docker 。
 
  1. docker login
  2. docker push glarimy/ums-find-service
 
最后一步是为 Kubernetes 部署构建清单 。
在之前的文章中,我们已经介绍了如何建立 Kubernetes 集群、部署和使用服务的方法 。我假设仍然使用之前文章中的清单文件来部署添加服务、MySQL、Kafka 和 Zookeeper 。我们只需要将以下内容添加到kube-find-deployment.yml文件中:
 
  1. apiVersion: apps/v1
  2. kind: Deployment
  3. metadata:
  4. name: ums-find-service
  5. labels:
  6. app: ums-find-service
  7. spec:
  8. replicas: 3
  9. selector:
  10. matchLabels:
  11. app: ums-find-service
  12. template:
  13. metadata:
  14. labels:
  15. app: ums-find-service
  16. spec:
  17. containers:
  18. - name: ums-find-service
  19. image: glarimy/ums-find-service
  20. ports:
  21. - containerPort: 8080
  22. ---
  23. apiVersion: v1
  24. kind: Service
  25. metadata:
  26. name: ums-find-service
  27. labels:
  28. name: ums-find-service
  29. spec:
  30. type: LoadBalancer
  31. ports:
  32. - port: 8080
  33. selector:
  34. app: ums-find-service
     
上面清单文件的第一部分声明了glarimy/ums-find-service镜像的FindService,它包含三个副本 。它还暴露 8080 端口 。清单的后半部分声明了一个 Kubernetes 服务作为FindService部署的前端 。请记住,在之前文章中,mysqldb 服务已经是上述清单的一部分了 。
运行以下命令在 Kubernetes 集群上部署清单文件:
 
  1. kubectl create -f kube-find-deployment.yml
 
部署完成后,可以使用以下命令验证容器组和服务:
 
  1. kubectl get services
     
输出如图 3 所示:
在 Kubernetes 上使用 Flask 搭建 Python 微服务

文章插图
图 3: Kubernetes 服务
它会列出集群上运行的所有服务 。注意查找服务的外部 IP,使用curl调用此服务:
 
  1. curl http://10.98.45.187:8080/user/KrishnaMohan
     
注意:10.98.45.187 对应查找服务,如图 3 所示 。
如果我们使用AddService创建一个名为KrishnaMohan的用户,那么上面的curl命令看起来如图 4 所示:
图 4: 查找服务
用户管理系统(UMS)的体系结构包含AddServiceFindService,以及存储和消息传递所需的后端服务,如图 5 所示 。可以看到终端用户使用ums-add-service的 IP 地址添加新用户,使用ums-find-service的 IP 地址查找已有用户 。每个 Kubernetes 服务都由三个对应容器的节点支持 。还要注意:同样的 mysqldb 服务用于存储和检索用户数据 。


推荐阅读