在 Duet AI 协助下创建和修改 GKE 集群

本教程介绍如何使用 Google Cloud 中由 AI 赋能的协作工具 Duet AI 在 Autopilot 中创建、测试和修改 Google Kubernetes Engine (GKE) 集群。您将了解 Duet AI 如何帮助将简单的应用部署到集群并为应用创建每日维护期。本教程面向任何经验水平的工程师。

目标

  • 通过询问 Duet AI 基于上下文的问题,探索可用于将应用部署到 GKE 的各种 Google 服务。
  • 提示 Duet AI 提供命令,您可以使用这些命令将基本应用部署到 GKE 集群。
  • 使用 Duet AI 解释和生成 shell 命令,以创建、探索和修改 GKE 集群。

使用的 Google Cloud 产品

本教程使用以下收费 Google Cloud 产品。请使用价格计算器根据您的预计使用情况来估算费用。

  • GKE。GKE 是一项代管式 Kubernetes 服务,可让您大规模部署和管理容器化应用。如需了解价格信息,请参阅 GKE 价格

  • Duet AI。Duet AI 是 Google Cloud 中始终在线的协作工具,为包括开发者和数据科学家在内的众多用户提供生成式 AI 赋能的协助。为了提供集成式协助体验,许多 Google Cloud 产品中嵌入了 Duet AI。

准备工作

  1. 启用 GKE API
  2. 确保已为您的 Google Cloud 用户帐号和项目设置 Duet AI

探索 Google Cloud 中的 Kubernetes

在下面的示例中,假设您是基础架构管理员,负责为开发 Web 应用的团队设置基础架构。整个组织已经使用容器和 Kubernetes 实现了标准化,因此该团队希望了解如何在 Google Cloud 中的 Kubernetes 上运行其 Web 应用。该团队还希望尽可能减少基础架构管理开销。

在 Google Cloud 控制台中,您可以与 Duet AI 聊天以获取帮助。使用 Duet AI 窗格,输入提示(提示是描述您所需的帮助的问题或语句),Duet AI 会返回回复。Duet AI 不会将您的提示或回复用作数据来训练其模型。如需了解详情,请参阅 Google Cloud 中的 Duet AI 如何使用您的数据

如需详细了解如何编写提示以生成良好的回复,请参阅为 Duet AI 编写更好的提示

如需提示 Duet AI 帮助您决定如何在 Google Cloud 中运行 Kubernetes,请按以下步骤操作:

  1. 在 Google Cloud 控制台工具栏中,点击 chat_spark 打开 Duet AI

  2. Duet AI 窗格中,根据您的要求和偏好设置输入以下提示,然后点击发送

    How can I run Kubernetes on Google Cloud without having to own
    management of nodes and the control plane?
    

    Duet AI 的响应可能如下所示:

    To run Kubernetes on Google Cloud without having to own management of
    nodes and the control plane, you can use Google Kubernetes Engine
    (Google Kubernetes Engine (GKE)) in Autopilot. In Autopilot mode, Google manages the
    control plane and system components for you, and also manages your
    worker nodes.
    
  3. 输入后续问题。例如,如果要使用 Terraform 在 Autopilot 模式下以标准化方式创建 GKE 集群,请输入以下提示:

    Can you use Terraform to provision GKE clusters in Autopilot mode?
    

    Duet AI 的响应可能如下所示:

    Yes, you can use Terraform to provision GKE clusters in Autopilot
    mode. Terraform is a tool that can be used to create and manage
    infrastructure on Google Cloud Platform. Find more information
    for your question here:
    https://cloud.google.com/blog/products/containers-kubernetes/partner-devops-and-security-solutions-for-gke-autopilot
    
  4. 可选:如果您的聊天记录与您接下来要询问的内容不相关,请重置聊天记录:在 Duet AI 窗格中,点击删除图标,然后选择重置聊天

在 Autopilot 模式下创建 GKE 集群

假设您不熟悉如何在 Autopilot 模式下使用 GKE 运行 Kubernetes。在为开发者预配集群之前,您首先决定在 Autopilot 模式下测试 GKE。在本部分中,您将提示 Duet AI 以 Autopilot 模式在 GKE 集群中创建和运行测试 Web 应用。

  1. Duet AI 窗格中,输入以下提示,然后点击发送

    How do I create a GKE Autopilot cluster?
    

    Duet AI 会返回有关使用 Google Cloud 控制台和 Google Cloud CLI 创建集群的说明。

  2. 当您看到包含 CLUSTER_NAMEREGIONPROJECT_ID 等占位值的响应时,将这些信息添加到提示中可能会得到更实用的响应。使用更多详细信息再次优化提示:

    What is the command to create a GKE Autopilot cluster in my current
    project named duet-ai-demo in the us-central region using the gcloud CLI?
    

    Duet AI 会返回类似于以下内容的响应:

    gcloud container clusters create-auto duet-ai-demo --region us-central1
    

    如需使用 Duet AI 提供的命令,请打开 Cloud Shell 并在响应中运行上述 gcloud 命令。

    几分钟后,您的 GKE Autopilot 集群即准备就绪,可供使用。

部署示例 Web 应用

现在您已创建了一个采用 Autopilot 模式的 GKE 集群,您希望测试运行示例 Web 应用(类似于您的团队将在此基础架构上运行的应用)。在内部,您可以看到 Google 的以下容器映像(已添加书签,用于测试容器化 Web 应用):us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0

  1. Duet AI 窗格中,输入以下提示,然后点击发送

    What is the kubectl command to create a deployment called
    hello-server for the image us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0?
    

    Duet AI 会返回类似于以下内容的响应:

    To create a deployment called hello-server for the image
    us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0, you
    can use the following kubectl command:
    
    kubectl create deployment hello-server --image=us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
    

    在 Cloud Shell 中运行上述 kubectl 命令。

  2. 创建 Web 服务器后,您决定在 Web 服务器前面配置负载均衡器以将其公开给互联网。

    Duet AI 窗格中,输入以下提示,然后点击发送

    What is the kubectl command to expose this deployment on port 80 with
    a load balancer?
    

    Duet AI 会返回类似于以下内容的响应:

    To expose the hello-server deployment on port 80 with a load
    balancer, you can use the following kubectl expose command:
    
    kubectl expose deployment hello-server \
      --type LoadBalancer \
      --port 80 \
      --target-port 8080
    

    运行此命令将为您的容器创建一个 Compute Engine 负载均衡器。

    虽然提供更多上下文总是很有帮助,但请注意 Duet AI 如何能够从对话历史记录中提取部署名称 hello-server,而无需在提示中包含该名称。

  3. 现在,您想要查看 Web 服务器是否正在运行并处理请求。如需查看已部署的应用,您需要从您创建的 Kubernetes 服务中检索外部 IP 地址。

    输入以下提示:

    What is the kubectl command to see the external IP address
    associated with this load balancer?
    

    Duet AI 会返回类似于以下内容的响应:

    To see the external IP associated with a load balancer, you can use
    the following kubectl command:
    
    kubectl get service hello-server -w
    
    This will output the name of the service, the type of service, the
    cluster IP address, the external IP address, and the ports that the
    service is listening on.
    

    几分钟后,运行上述 kubectl 命令会生成类似于以下内容的结果:

    NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)        AGE
    hello-server   LoadBalancer   34.118.227.57   35.225.15.112   80:31473/TCP   6m18s
    

    您现在可以使用为 EXTERNAL-IP 返回的值访问在 GKE 上运行的 Web 应用。

规划集群升级策略

现在,您已经在 Autopilot 模式下在 GKE 集群中测试了团队的主要使用场景。但是,在继续让团队使用 GKE Autopilot 之前,您需要配置集群维护或升级的时间。

您知道团队 Web 应用的用户流量模式是昼夜的。鉴于 Duet AI 已传达 GKE Autopilot 为您处理集群的维护,您希望指示此维护发生在 Web 应用的繁忙时段之外。

  1. 输入以下提示:

    How can I configure periods of time where GKE Autopilot won't
    perform maintenance or upgrades on my cluster nodes?
    

    Duet AI 会返回类似于以下内容的响应:

    To configure periods of time where GKE Autopilot won't perform
    maintenance or upgrades on your cluster nodes, you can use
    maintenance windows and exclusions.
    
    Maintenance windows are periods of time when GKE Autopilot is allowed
    to perform maintenance and upgrades on your cluster nodes. You can
    specify a maintenance window for your cluster when you create it, or
    you can update an existing cluster to specify a maintenance
    window.
    
    Maintenance exclusions are periods of time when GKE Autopilot is not
    allowed to perform maintenance or upgrades on your cluster nodes. You
    can create a maintenance exclusion for your cluster when you create
    it, or you can update an existing cluster to create a maintenance
    exclusion.
    
    To create a maintenance window or a maintenance exclusion, you can
    use the Google Cloud console, the gcloud CLI, or the Kubernetes
    API.
    
  2. 您决定使用 gcloud 在 Web 应用的关机期间创建一个每日维护窗口。输入以下提示:

    How can I create a daily maintenance window from 22:00 to 02:00 using
    `gcloud` for my GKE Autopilot cluster named duet-ai-demo?
    

    Duet AI 会返回类似于以下内容的响应:

    To create a daily maintenance window using gcloud CLI for your
    duet-ai-demo GKE Autopilot cluster that goes from 22:00 to 02:00, you
    can use the following command:
    
    gcloud container clusters update duet-ai-demo \
      --maintenance-window-start 22:00 \
      --maintenance-window-end 02:00 \
      --maintenance-window-recurrence "FREQ=DAILY"
    
    This command will create a daily maintenance window that runs from
    22:00 to 02:00 UTC time zone.
    

    运行此命令可确保您为团队预配的基础架构会在用户最繁忙的时段进行维护。现在,您可以向 Web 应用团队推荐 GKE Autopilot 了!

清理

为避免因本教程中使用的资源导致您的 Google Cloud 帐号产生费用,您可以删除为本教程创建的 Google Cloud 项目。或者,您也可以删除各个资源。

  1. 在 Google Cloud 控制台中,进入管理资源页面。

    转到“管理资源”

  2. 在项目列表中,选择要删除的项目,然后点击删除
  3. 在对话框中输入项目 ID,然后点击关闭以删除项目。

后续步骤