目录
在之前的系列文章中,我们讨论了在一组Docker容器中作为CI/CD MLOps管道的一部分执行的脚本。在本系列中,我们将向您展示如何设置Google Kubernetes Engine(GKE) 集群来部署这些容器。本系列文章假设您熟悉深度学习、DevOps、Jenkins和基本Kubernetes。
GKE是Google Cloud Platform提供的Kubernetes解决方案,它提供了很多好处。Kubernetes是最先进的开源平台,用于部署、扩展和处理容器化应用程序或微服务。它提供:
- 极其简单的自动缩放
- 自动健康检查和自我修复选项
- 集群内微服务之间网络流量的自动路由
- 来自集群外部的流量的路由和负载平衡。
Kubernetes简述
Kubernetes集群由一个主节点和一个或多个工作节点组成。主节点管理整个集群,包括通信。正如您可能已经猜到的那样,工作节点完成所有繁重的工作。您的微服务将分布在工作节点上,以确保它们在集群生命周期内保持健康。
Kubernetes的五个概念与当前的系列文章相关——pods, jobs, deployments, services和secrets:
- pod是最小Kubernetes单元。它是一组一个或多个容器。每个Pod都连接到一个工作节点,该节点可以运行多个Pod。如果此节点出现故障,则其pod将移动到另一个可用的工作节点。
- job启动一个或多个Pod来执行一项任务。一旦任务结束,所有pod都会终止。如果任务执行失败,作业将不断重试,直到成功。
- deployment 是一组提供给所述主节点的规则。这些规则定义了如何创建应用程序并处理其跨工作节点的生命周期。主节点会持续监控您的部署。如果失败,则会启动一个新实例,因此您的应用程序始终会运行。为了使您的部署可从集群外部访问,您需要创建一个LoadBalancer 服务,该服务处理进入Kubernetes集群的流量。
- service 是一组pods和定义如何在它们之间路由流量的策略。
- Secrets是YAML文件,集群中的任何元素都可以通过环境变量访问这些文件。这是Kubernetes中处理敏感信息的默认方法。
设置GKE集群
如果您尚未配置Google Cloud Platform结算帐户,请按照以下步骤操作。如果您尚未配置Google Cloud SDK,请查看本文,我们在其中提供了配置指南。
启动GKE集群
让我们通过终端启动集群。如果您计划进行支持GPU的训练,请发出:
gcloud container clusters create training-cluster --num-nodes=2 --zone=us-central1-a --accelerator="type=nvidia-tesla-p100,count=1" --machine-type="n1-highmem-2" --scopes="gke-default,storage-rw"
否则(对于CPU训练),运行:
gcloud container clusters create training-cluster --num-nodes=2 --zone=us-central1-a --machine-type="n1-highmem-2" --scopes="gke-default,storage-rw"
响应将类似于:
响应通知您集群已创建后,打开GCP控制台并转到Kubernetes Engine > Clusters。
您应该会发现您的Kubernetes集群处于活动状态:
在继续之前,安装kubectl,该命令行包将允许您与Kubernetes交互:
创建secrets.yaml文件
为了能够从我们的微服务中发送通知电子邮件,我们需要将一个电子邮件帐户地址和相应的密码传递给这些。这些凭据是敏感信息,这就是我们将使用secrets的原因。将以下文件中的字段替换为您的电子邮件地址和密码。(如果您使用Gmail地址,请查看本指南)。该文件如下:
apiVersion: v1
kind: Secret
metadata:
name: gmail-secrets
type: Opaque
data:
gmail_address: your_email_address
gmail_password: your_app_password
将文件另存为secrets.yaml。打开终端窗口并将这些指令应用到集群:
kubectl apply -f secrets.yaml
下一步
我们现在已准备好使用GKE。在接下来的文章中,我们将看到如何定义工作,部署和服务,使我们的容器可以实现他们的目标。