在 GKE 中使用 Compute Engine 单租户节点


本页面介绍如何在 Google Kubernetes Engine (GKE) 中使用 Compute Engine 单租户节点

单租户节点是运行特定项目虚拟机的专用物理服务器。您可以使用单租户节点将您的虚拟机与其他项目中的虚拟机进行物理隔离,或者将您的虚拟机汇集到同一主机硬件上。

准备工作

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

  • 确保您已启用 Google Kubernetes Engine API。
  • 启用 Google Kubernetes Engine API
  • 确保您已安装 Google Cloud CLI
  • 使用以下某种方法为您的项目设置默认 Google Cloud CLI 设置:
    • 使用 gcloud init(如果您想要在系统引导下完成项目默认设置)。
    • 使用 gcloud config(如果您想要单独设置项目 ID、可用区和区域。

    gcloud init

    1. 运行 gcloud init 并按照说明操作:

      gcloud init

      如果您要在远程服务器上使用 SSH,请使用 --console-only 标志来防止命令启动浏览器:

      gcloud init --console-only
    2. 按照说明授权 gcloud CLI 使用您的 Google Cloud 帐号。
    3. 创建新配置或选择现有配置。
    4. 选择 Google Cloud 项目。
    5. 选择默认的 Compute Engine 可用区
    6. 选择默认的 Compute Engine 区域

    gcloud config

    1. 设置默认项目 ID
      gcloud config set project PROJECT_ID
    2. 设置默认的 Compute Engine 区域(例如 us-central1):
      gcloud config set compute/region COMPUTE_REGION
    3. 设置默认的 Compute Engine 可用区(例如 us-central1-c):
      gcloud config set compute/zone COMPUTE_ZONE
    4. gcloud 更新到最新版本:
      gcloud components update

    通过设置默认位置,您可以避免 gcloud CLI 中出现以下错误:One of [--zone, --region] must be supplied: Please specify location

申请更多配额

单租户节点很大(例如 96 个 vCPU 和 624 GB 内存),而默认项目配额过低,无法处理这些节点。

您必须在配额页面上申请增加 Compute Engine API CPU 的配额才能创建单租户节点。如需详细了解如何申请增加配额,请参阅配额

您需要的 CPU 数量取决于以下各项:

  • 当前的 CPU 配额用量。
  • 节点组的大小。
  • 节点模板。

了解您的单租户节点类型的核心数,并申请至少达到该值的 CPU 上限,最好有 10 个额外 CPU 的余量。

创建单租户节点模板

单租户节点模板是一种地区性资源,用于在创建节点组时定义属性并将其应用于每个节点。如需了解详情,请参阅节点类型

控制台

  1. 转到 Cloud Console 中的单租户节点页面。

    转到“单租户节点”

  2. 点击创建节点模板

  3. 为节点模板指定名称地区

  4. 选择节点类型

  5. (可选)添加一个或多个节点亲和性标签。

  6. 点击创建以创建节点模板。

gcloud

使用 gcloud compute sole-tenancy node-templates create 命令创建节点模板:

gcloud compute sole-tenancy node-templates create TEMPLATE_NAME \
    --node-type=NODE_TYPE \
    --node-affinity-labels=AFFINITY_LABELS \
    --region=COMPUTE_REGION

请替换以下内容:

  • TEMPLATE_NAME:新节点模板的名称。
  • NODE_TYPE:基于此模板创建的单租户节点的节点类型。使用 gcloud compute sole-tenancy node-types list 命令获取每个区域中可用节点类型的列表。
  • AFFINITY_LABELS:亲和性标签的键和值 ([KEY=VALUE,...])。借助亲和性标签,您可以对节点和节点组进行逻辑分组,然后在预配虚拟机时,您可以为虚拟机指定亲和性标签,以便将虚拟机调度到一组特定节点或节点组上。如需了解详情,请参阅节点亲和性和反亲和性
  • COMPUTE_REGION:要在其中创建节点模板的区域。您可以使用该模板在此地区的任何区域中创建节点组。

输出内容类似如下:

Created [https://www.googleapis.com/compute/v1/projects/my-project/regions/us-central1/nodeTemplates/template-name].

创建单租户节点组

节点组是来自同一单租户节点模板的特定区域内的一组单租户节点。对于可在多个区域中使用的地区级集群和节点池,您必须在每个区域中创建一个同名的节点组。

控制台

要创建单租户节点组,请执行以下步骤:

  1. 转到 Cloud Console 中的单租户节点页面。

    转到“单租户节点”

  2. 点击创建节点组

  3. 为节点模板指定名称

  4. 选择您在其中创建节点模板的同一地区,然后在该地区中选择一个区域

  5. 选择您的节点模板

  6. (可选)启用自动扩缩模式

  7. 指定组中的节点数

  8. (可选)更改维护政策

  9. 点击创建以创建节点组。

gcloud

基于模板创建节点组:

gcloud compute sole-tenancy node-groups create GROUP_NAME \
    --zone COMPUTE_ZONE \
    --node-template TEMPLATE_NAME --target-size TARGET_SIZE

请替换以下内容:

  • GROUP_NAME:您要用于新节点组的名称。
  • COMPUTE_ZONE:此节点组所在的地区。此地区必须与您使用的节点模板位于同一区域。
  • TEMPLATE_NAME:您使用的节点模板的名称。
  • TARGET_SIZE:您希望在此节点组中创建的节点数。

输出内容类似如下:

Created [https://www.googleapis.com/compute/projects/my-project/zones/us-central1-a/nodeGroups/group-name].

创建 GKE 单租户节点

现在,您已在 Compute Engine 中创建了单租户节点组,接下来可以创建单租户节点池。

如果您已有 GKE 集群,则可以向其中添加单租户节点池。如果没有,请使用 gcloud container clusters create 创建集群。

如果您使用的是地区级集群,或者您的节点池可在多个区域使用,您必须在每个这些区域中创建一个同名的节点组。如果您无法在每个区域重复使用该名称,请为每个区域创建单独的节点池。

  1. 创建具有指定节点组的新节点池:

    对于区域级节点池:

    gcloud container node-pools create NODE_POOL_NAME \
        --node-group GROUP_NAME --cluster CLUSTER_NAME \
        --zone COMPUTE_ZONE --machine-type=MACHINE_TYPE \
        --node-locations=COMPUTE_ZONE,COMPUTE_ZONE1
    

    对于地区级节点池:

    gcloud container node-pools create NODE_POOL_NAME \
        --node-group GROUP_NAME --cluster CLUSTER_NAME \
        --region COMPUTE_REGION --machine-type=MACHINE_TYPE \
        --node-locations=COMPUTE_ZONE,COMPUTE_ZONE1
    

    替换以下内容:

    • NODE_POOL_NAME:新节点池的名称。
    • GROUP_NAME:您要使用的现有单租户节点组的名称。
    • CLUSTER_NAME:要在其中创建节点池的集群的名称。
    • COMPUTE_REGION:与您的集群相同的地区。
    • MACHINE_TYPE:节点池机器类型。
    • COMPUTE_ZONECOMPUTE_ZONE1,[...]:单租户节点组的地区
  2. 验证节点池是否已创建:

    kubectl get nodes
    

您应该会在刚才创建的节点池中看到处于 Ready 状态的节点列表。您还可以在“单租户”页面查看单租户节点。

清理

如需移除在上述示例中创建的资源,请执行以下步骤:

  1. 删除单租户节点节点池:

    gcloud container node-pools delete NODE_POOL_NAME
    
  2. 删除单租户节点组:

    gcloud compute sole-tenancy node-groups delete GROUP_NAME \
        --zone COMPUTE_ZONE
    
  3. 删除单租户节点模板:

    gcloud compute sole-tenancy node-templates delete TEMPLATE_NAME \
        --region COMPUTE_REGION
    

后续步骤