为 Autopilot Pod 选择计算类


本文档介绍了如何选择特定计算类,以运行在 Google Kubernetes Engine (GKE) Autopilot 集群中具有独特硬件要求的工作负载。在阅读本文档之前,请确保您熟悉 GKE Autopilot 中的计算类的概念。

Autopilot 计算类概览

Autopilot 提供的计算类旨在运行具有特定硬件要求的工作负载。这些计算类可用于机器学习和 AI 任务或运行实时高流量数据库等工作负载。

这些计算类是 Compute Engine 机器系列的子集,可提供默认的 Autopilot 通用计算类的灵活性。 例如,Scale-Out 类会关闭并发多线程,以使每个 vCPU 都是一个物理核心。

根据您的个人 Pod 需求,您可以配置常规 Autopilot Pod 或 Spot Pod,以请求由这些计算类支持的节点。您还可以在支持该架构的计算类中请求特定的 CPU 架构(例如 Arm)。

准备工作

在开始之前,请确保您已执行以下任务:

  • 启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 如果您要使用 Google Cloud CLI 执行此任务,请安装初始化 gcloud CLI。 如果您之前安装了 gcloud CLI,请运行 gcloud components update 以获取最新版本。

在 Autopilot Pod 中请求计算类

如需指示 Autopilot 将 Pod 放置在特定计算类上,请指定 cloud.google.com/compute-class 标签(位于 nodeSelector)或节点亲和性规则,如以下示例所示:

nodeSelector

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          nodeSelector:
            cloud.google.com/compute-class: "COMPUTE_CLASS"
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
    

根据您的用例将 COMPUTE_CLASS 替换为计算类的名称,例如 Scale-Out。 如果您选择 Accelerator,则还必须指定兼容的 GPU。如需了解相关说明,请参阅在 Autopilot 中部署 GPU 工作负载。 如果您选择 Performance,则还必须在节点选择器中选择 Compute Engine 机器系列。如需了解相关说明,请参阅以最佳性能运行 CPU 密集型工作负载

nodeAffinity

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: hello-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: hello-app
      template:
        metadata:
          labels:
            app: hello-app
        spec:
          terminationGracePeriodSeconds: 25
          containers:
          - name: hello-app
            image: us-docker.pkg.dev/google-samples/containers/gke/hello-app:1.0
            resources:
              requests:
                cpu: "2000m"
                memory: "2Gi"
                ephemeral-storage: "1Gi"
          affinity:
            nodeAffinity:
              requiredDuringSchedulingIgnoredDuringExecution:
                nodeSelectorTerms:
                - matchExpressions:
                  - key: cloud.google.com/compute-class
                    operator: In
                    values:
                    - "COMPUTE_CLASS"
      

根据您的用例将 COMPUTE_CLASS 替换为计算类的名称,例如 Scale-Out。如果您选择 Accelerator,则还必须指定兼容的 GPU。如需了解相关说明,请参阅在 Autopilot 中部署 GPU 工作负载。 如果您选择 Performance,则还必须在节点选择器中选择 Compute Engine 机器系列。如需了解相关说明,请参阅以最佳性能运行 CPU 密集型工作负载

您还可以为 Spot Pod 请求特定计算类。

指定资源请求

选择计算类时,请确保根据所选类的最小和最大资源请求为 Pod 指定资源请求。如果请求小于最小值,则 Autopilot 会自动扩容请求。但是,如果请求大于最大值,则 Autopilot 不会部署 Pod 并显示错误消息。

选择 CPU 架构

某些计算类支持多个 CPU 架构。例如,Scale-Out 类支持 Arm 和 x86 架构。如果您未请求特定架构,则 Autopilot 功能会预配具有指定计算类默认架构的节点。如果您的 Pod 需要使用其他架构,请随您的计算类请求在节点选择器或节点亲和性规则中请求该架构。您请求的计算类必须支持您指定的 CPU 架构。

如需了解相关说明,请参阅在 Arm 架构上部署 Autopilot Pod

后续步骤