本快速入门假定您对 Kubernetes 具有基本的了解。
您可以按照本页中所述的步骤操作,也可以尝试将此快速入门作为 Google Cloud 培训实验室。
准备工作
请按照以下步骤启用 Kubernetes Engine API:- 访问 Google Cloud Console 中的 Kubernetes Engine 页面。
- 创建或选择项目。
- 稍作等待,让 API 和相关服务完成启用过程。 此过程可能耗时几分钟。
-
确保您的 Cloud 项目已启用结算功能。 了解如何确认您的项目是否已启用结算功能。
配额要求
为完成本快速入门,您需要具有以下项的可用配额:
- 您的集群所在区域中的 1 个 Compute Engine CPU。
- 1 个使用中的 IP 地址。
如需检查可用配额,请使用 Cloud Console。
选择 shell
为完成本快速入门,您可以使用 Cloud Shell 或本地 shell。
Cloud Shell 是一种 shell 环境,用于管理托管在 Google Cloud 上的资源。Cloud Shell 预安装有 gcloud
命令行工具和 kubectl 命令行工具。gcloud
工具为 Google Cloud 提供了主要的命令行界面,kubectl
则为 Kubernetes 集群运行命令提供了主要命令行界面。
如果您更喜欢使用本地 shell,则必须在您的环境中安装 gcloud
工具和 kubectl
工具。
Cloud Shell
如需启动 Cloud Shell,请执行以下步骤:
转到 Google Cloud Console。
在控制台的右上角,点击激活 Cloud Shell 按钮:
控制台下方的框架内会打开一个 Cloud Shell 会话。您可以使用此 shell 运行 gcloud
和 kubectl
命令。
本地 shell
如需安装 gcloud
和 kubectl
,请执行以下步骤:
- 安装 Cloud SDK,其中包含
gcloud
命令行工具。 安装 Cloud SDK 后,请运行以下命令安装
kubectl
命令行工具:gcloud components install kubectl
配置 gcloud
工具的默认设置
使用 gcloud
工具配置两个默认设置:默认的项目和计算地区。
您的项目具有项目 ID,它是项目的唯一标识符。首次创建项目时,您可以使用自动生成的项目 ID,也可以创建自己的项目 ID。
计算地区是您的集群及其资源所在区域中的某个位置。例如,us-west1-a
是 us-west
区域中的地区。
配置这些默认设置可以更轻松地运行 gcloud
命令,因为 gcloud
要求您指定要在其中工作的项目和计算地区。您还可以在 gcloud
命令中指定这些设置或使用 --project
、--zone
和 --cluster
等标志替换默认设置。
配置完默认项目和计算地区后,当您创建 GKE 资源时,这些资源会在该项目和地区中自动创建。
设置默认项目
运行以下命令,将 project-id
替换为您的项目 ID:
gcloud config set project project-id
设置默认计算地区
运行以下命令,将 compute-zone
替换为您的计算地区,例如 us-west1-a
:
gcloud config set compute/zone compute-zone
创建 GKE 集群
一个集群包含至少一台集群控制层面机器以及多台工作器机器,这些工作器机器称为“节点”。节点是运行 Kubernetes 进程的 Compute Engine 虚拟机实例;必须有这些进程,节点才能加入到集群中。您将应用部署到集群,该应用在节点上运行。
以下命令会创建一个单一节点集群。将 cluster-name
替换为您的集群名称:
gcloud container clusters create cluster-name --num-nodes=1
获取用于集群的身份验证凭据
创建集群后,您需要获取身份验证凭据才能与该集群交互:
gcloud container clusters get-credentials cluster-name
此命令将 kubectl
配置为使用您创建的集群。
将应用部署到集群中
现在您已创建了一个集群,可以向其部署容器化应用了。在本快速入门中,您可以部署我们的 hello-app
示例 Web 应用。
GKE 使用 Kubernetes 对象创建和管理集群的资源。Kubernetes 提供了 Deployment 对象,用于部署 Web 服务器等无状态应用。Service 对象则用于定义从互联网访问您的应用时需要遵循的规则和负载平衡机制。
创建 Deployment
如需在集群中运行 hello-app
,请运行以下命令:
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
此 Kubernetes 命令 kubectl create deployment
会创建名为 hello-server
的 Deployment。此 Deployment 的 Pod 运行 hello-app
容器映像。
在此命令中:
--image
指定了要部署的容器映像。在本示例中,该命令会从 Container Registry 存储分区中拉取示例映像gcr.io/google-samples/hello-app
。:1.0
指示要拉取的特定映像版本。如果您未指定版本,则系统会使用最新版本。
公开 Deployment
部署应用后,您需要将其公开到互联网,以便用户访问该应用。您可以通过创建 Service 来公开应用,这是一种 Kubernetes 资源,可以将您的应用公开给外部流量。
如需公开您的应用,请运行以下 kubectl expose
命令:
kubectl expose deployment hello-server --type LoadBalancer \ --port 80 --target-port 8080
传入 --type LoadBalancer
标志会为您的容器创建 Compute Engine 负载平衡器。--port
标志会初始化连接到互联网的公共端口 80,--target-port
标志会将流量路由到应用的端口 8080。
负载平衡器按 Compute Engine 的负载平衡器价格计费。
检查和查看应用
使用
kubectl get pods
检查正在运行的 Pod:kubectl get pods
您应该会看到一个
hello-server
Pod 正在您的集群上运行。使用
kubectl get service
检查hello-server
Service:kubectl get service hello-server
从此命令的输出结果的
EXTERNAL-IP
列中,复制 Service 的外部 IP 地址。在您的网络浏览器中使用外部 IP 地址及公开的端口查看应用:
http://external-ip/
您刚刚向 GKE 部署了一个容器化 Web 应用。
清理
为避免系统因本快速入门中使用的资源向您的 Google Cloud 帐号收取费用,请按照以下步骤操作。
运行
kubectl delete
以删除应用的 Service:kubectl delete service hello-server
此命令会删除您在公开 Deployment 时创建的 Compute Engine 负载平衡器。
运行
gcloud container clusters delete
以删除您的集群:gcloud container clusters delete cluster-name
可选:hello-app
代码审核
hello-app
是一个简单的 Web 服务器应用,由两个文件组成:main.go
和 Dockerfile
。
hello-app
打包为 Docker 容器映像。容器映像存储在任意 Docker 映像注册表(例如 Container Registry)中。我们在名为 gcr.io/google-samples/hello-app
的 Container Registry 存储分区中托管 hello-app
。
main.go
main.go
是使用 Go 编程语言编写的一个 Web 服务器实现。该服务器会以一条“Hello, world!”消息响应任何 HTTP 请求。
Dockerfile
Dockerfile
用于描述您希望 Docker 构建的映像(包括其所有资源和依赖项),并指定应用应该公开的网络端口。如需详细了解此文件的工作方式,请参阅 Docker 文档中的 Dockerfile 参考。