为 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 命令以获取最新版本。较早版本的 gcloud CLI 可能不支持运行本文档中的命令。

在 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。如果您选择 Performance,则可以酌情在节点选择器中选择 Compute Engine 机器系列。如果您未指定机器系列,GKE 会根据区域可用性使用 C4 机器系列。如需相关说明,请参阅以最佳性能运行 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。如果您选择 Performance,则可以酌情在节点选择器中选择 Compute Engine 机器系列。如果您未指定机器系列,GKE 会根据区域可用性使用 C4 机器系列。如需相关说明,请参阅以最佳性能运行 CPU 密集型工作负载

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

指定资源请求

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

选择 CPU 架构

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

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

后续步骤