搭建Google Kubernetes Engine (GKE) 集群

在本系列文章中,将展示如何设置Google Kubernetes Engine (GKE) 集群来部署容器。假设已经熟悉深度学习、DevOpsJenkins和Kubernetes的基础知识。

GKE是Google Cloud Platform提供的Kubernetes解决方案,它带来了许多好处。Kubernetes是一个先进的开源平台,用于部署、扩展和管理容器化应用程序或微服务。它提供:

  • 极其简单的自动扩展
  • 自动化健康检查和自修复选项
  • 自动在集群内的微服务之间路由网络流量
  • 路由和负载均衡来自集群外部的流量

Kubernetes概述

Kubernetes集群由一个主节点和多个工作节点组成。主节点管理整个集群,包括通信。工作节点则承担所有繁重的工作。微服务将分布在工作节点上,以确保它们在集群生命周期内保持健康。

当前文章系列中与五个Kubernetes概念相关:

  • Pods
  • Jobs
  • Deployments
  • Services
  • Secrets

Pod是最小的Kubernetes单元。它是一组一个或多个容器。每个Pod都附加到一个工作节点上,该节点可以运行多个Pod。如果该节点失败,其Pod将移动到另一个可用的工作节点上。

Job启动一个或多个Pod来执行任务。一旦任务结束,所有Pod都将被终止。如果任务执行失败,Job将不断重试,直到成功。

Deployment是提供给主节点的一组规则。这些规则定义了如何在工作节点上创建应用程序并处理其生命周期。主节点不断监控部署。如果失败,将启动一个新实例,因此应用程序始终运行。要使部署可以从集群外部访问,需要创建一个LoadBalancer服务,该服务处理进入Kubernetes集群的流量。

服务是一组Pod和一个定义如何跨它们路由流量的策略。Secrets是YAML文件,集群中的任何元素都可以通过环境变量访问。这是在Kubernetes中处理敏感信息的默认方法。

设置GKE集群

如果还没有配置Google Cloud Platform的计费账户,请按照以下步骤操作。如果还没有配置Google Cloud SDK,请查看本文和本文,其中有配置指南。

让通过终端启动集群。如果计划进行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控制台并转到KubernetesEngine > Clusters。

应该找到Kubernetes集群处于活动状态:

在继续之前,请安装kubectl,这是一个命令行包,允许与Kubernetes交互:

为了能够从微服务中发送通知邮件,需要将电子邮件地址和相应的密码传递给它们。这些凭据是敏感信息,这就是为什么将使用secrets。用电子邮件地址和密码替换以下文件中的字段。(如果使用Gmail地址,请查看本文。)文件如下:

apiVersion: v1 kind: Secret metadata: name: gmail-secrets type: Opaque data: gmail_address: your_email_address gmail_password: your_app_password kubectl apply -f secrets.yaml
沪ICP备2024098111号-1
上海秋旦网络科技中心:上海市奉贤区金大公路8218号1幢 联系电话:17898875485