向 VPC 集群添加工作节点

虚拟私有云

请查阅以下各节,了解如何向您的 VPC 集群添加工作节点。

在添加工作者节点之前,请确保 VPC 账户有足够的 vCPU, 内存、GPU、实例存储和优化实例存储资源配额。 VPC 按虚拟服务器实例 (VSI) 工作节点的每个帐户管理这些配额。 如果达到配额限制,工作节点调配将失败。 要查看当前配额使用情况,请参阅 查看 VPC 资源指标。 有关详细信息,请参阅 VPC 配额为什么我的 VPC 工作节点因配额限制而无法调配?

要提高应用程序的可用性,可以将工作程序节点添加到集群中的一个或多个现有专区中。 为了帮助保护应用程序免受专区故障的影响,您可以向集群添加专区。

创建集群时,会在工作程序池中供应工作程序节点。 创建集群后,可以通过调整其大小或添加更多工作程序池,将更多工作程序节点添加到池。 缺省情况下,工作程序池存在于一个专区中。 仅在一个专区中有工作程序池的集群称为单专区集群。 向集群添加更多专区时,该工作程序池会跨多个专区。 具有跨多个专区分布的工作程序池的集群称为多专区集群。

如果您有多专区集群,请使其工作程序节点资源保持均衡。 确保所有工作程序池跨相同专区进行分布,并通过调整池大小(而不采用添加单个节点的方式)来添加或除去工作程序。 设置工作程序池后,可以设置集群自动缩放器,以根据工作负载资源请求,自动在工作程序池中添加或除去工作程序节点。

必须在创建工人池时添加辅助本地存储。 不支持在创建工作池后从 VPC 基础架构级别手动添加存储,也不会在群集中产生额外的短暂存储。

要将工作程序添加到经典集群吗? 请参阅 将工作程序节点添加到经典集群

调整工作程序池的大小

您可以通过调整现有工作程序池的大小来添加或减少集群中的工作程序节点数,而不管工作程序池是位于一个专区中还是或跨多个专区分布。

开始之前,请确保您拥有 “操作员”或 “管理员”IAM 平台访问角色

要调整工作程序池大小,请更改工作程序池在每个专区中部署的工作程序节点数:

  1. 获取要调整其大小的工作程序池的名称。
    ibmcloud oc worker-pool ls --cluster CLUSTER-NAME
    
  2. 通过指定要在每个专区中部署的工作程序节点数来调整工作程序池的大小。
    ibmcloud oc worker-pool resize --cluster CLUSTER-NAME --worker-pool POOL_NAME  --size-per-zone NUMBER_OF_WORKERS_PER_ZONE
    
  3. 验证工作程序池的大小是否已调整。
    ibmcloud oc worker ls --cluster CLUSTER-NAME --worker-pool POOL_NAME
    
    以下是一个位于两个区域( us-south-1us-south-2 )且已调整为每个区域两个工作节点的 worker 池的输出示例:
    ID                                                 Public IP        Private IP      Machine Type      State    Status  Zone    Version
    kube-dal10-crb20b637238ea471f8d4a8b881aae4962-w7   169.xx.xxx.xxx   10.xxx.xx.xxx   b3c.4x16          normal   Ready   us-south-1   1.35
    kube-dal10-crb20b637238ea471f8d4a8b881aae4962-w8   169.xx.xxx.xxx   10.xxx.xx.xxx   b3c.4x16          normal   Ready   us-south-1   1.35
    kube-dal12-crb20b637238ea471f8d4a8b881aae4962-w9   169.xx.xxx.xxx   10.xxx.xx.xxx   b3c.4x16          normal   Ready   us-south-2   1.35
    kube-dal12-crb20b637238ea471f8d4a8b881aae4962-w10  169.xx.xxx.xxx   10.xxx.xx.xxx   b3c.4x16          normal   Ready   us-south-2   1.35
    

创建新的工作程序池

要在专用主机上创建新的工作程序池吗? 请参阅 在 CLI 中设置专用主机

开始之前,请确保您拥有 “操作员”或 “管理员”IAM 平台访问角色

  1. 检索集群的 VPC 标识工作程序专区,并选择要在其中部署工作程序池中工作程序节点的专区。 您可以选择集群中现有的任何一个工作节点区域,或者为集群所在的区域添加一个 多区域位置。 您可以运行 ibmcloud oc zone ls --provider vpc-gen2 来列出可用的区域。

    ibmcloud oc cluster get --cluster CLUSTER-NAME
    

    示例输出

    ...
    VPC ID:        <VPC_ID>
    ...
    Worker Zones: us-south-1, us-south-2, us-south-3
    
  2. 对于每个专区,记下要用于工作程序池的 VPC 子网的标识。 如果区域中没有 VPC 子网,请 创建 VPC 子网。 VPC 子网为集群中的工作节点和负载均衡服务提供 IP 地址,因此 创建一个包含足够IP地址的VPC子网,例如 256。

    ibmcloud oc subnets --zone <ZONE> --provider vpc-gen2 --vpc-id <VPC_ID>
    
  3. 对于每个区域,请查看工作节点可用的版本。

    ibmcloud oc flavors --zone <ZONE> --provider vpc-gen2
    
  4. 可选: 要加密工作程序池中每个工作程序节点的本地磁盘,请获取密钥管理服务 (KMS) 提供程序的详细信息。 如果要使用来自其他帐户的 KMS 实例,那么需要在 KMS 实例所在的帐户下执行这些步骤。

    1. 完成 VPC 工作程序节点 中的步骤以创建 KMS 实例并在 IAM 中授权服务。

    2. 列出可用的 KMS 实例并记下 标识

        ibmcloud oc kms instance ls
        ```
    1. 列出要使用的 KMS 实例的可用根密钥,并记下 **标识**。
    
    ```sh {: pre}
        ibmcloud oc kms crk ls --instance-id <KMS_instance_ID>
        ```
    
  5. 创建工作程序池。 有关更多选项,请参阅 CLI 文档

    ibmcloud oc worker-pool create vpc-gen2 --name NAME --cluster CLUSTER-NAME --flavor FLAVOR --size-per-zone NUMBER_OF_WORKER_NODES [--label KEY=VALUE] [--vpc-id] [[--kms-account-id <KMS_account_ID>] --kms-instance <KMS_instance_ID> --crk <root_key_ID>] [--dedicated-host-pool <dedicated-host-pool>] [--security-group <group-id>] [--operating-system SYSTEM]
    
    --label KEY=VALUE
    可选: 使用标签 key=value 对自动标记池中的工作程序节点。
    --vpc-id VPC
    如果工作程序池是集群中的第一个工作程序池,请指定此选项。
    --operating-system RHEL_9_64|REDHAT_8_64|RHCOS
    可选。 集群中工作程序节点的操作系统。 如需按集群版本查看可用操作系统列表,请参阅 Red Hat OpenShift on IBM Cloud 版本信息。 如果未指定任何选项,那么将使用与集群版本对应的缺省操作系统。
    --kms-account-id ACCOUNT
    可选: 指定 KMS 实例所在的帐户。 同时包含 --kms-instance-id--crk 选项。
    --kms-instance INSTANCE
    可选: 指定 KMS 实例标识。 同时包含 --kms-account-id--crk 选项。
    --crk KEY
    可选: 指定 KMS 根密钥。 同时包含 --kms-account-id--kms-instance 选项。
    --security-group GROUP
    指定此选项以将其他安全组附加到工作程序池中的工作程序。 包含要连接的安全组标识。
    --dedicated-host-pool POOL
    如果要在专用主机上创建工作程序池,请指定此选项。
  6. 验证工作程序池是否已创建。

    ibmcloud oc worker-pool ls --cluster CLUSTER-NAME
    
  7. 缺省情况下,添加工作程序池将创建不包含专区的池。 要在专区中部署工作程序节点,必须将先前检索到的专区添加到工作程序池。 如果要跨多个专区分布工作程序节点,请对每个专区重复此命令。

    ibmcloud oc zone add vpc-gen2 --zone ZONE --subnet-id SUBNET_ID --cluster CLUSTER-NAME --worker-pool WORKER_POOL_NAME
    
  8. 验证工作程序节点是否在添加的专区中供应。 当 Stateprovisioning 更改为 normal 时,说明工作程序节点已就绪。

    ibmcloud oc worker ls --cluster CLUSTER-NAME --worker-pool POOL_NAME
    

    示例输出

    ID                                                     Primary IP     Flavor   State          Status                                        Zone       Version   
    kube-<ID_string>-<cluster_name>-<pool_name>-00000002   10.xxx.xx.xxx   c2.2x4   provisioning   Infrastructure instance status is 'pending'   us-south-1   -   
    kube-<ID_string>-<cluster_name>-<pool_name>-00000003   10.xxx.xx.xxx   c2.2x4   normal   Ready   us-south-1   1.35_1511   
    

向工作程序池添加专区

可以通过向现有工作程序池添加专区,使 VPC 集群跨一个区域内的多个专区。

将专区添加到工作程序池时,将在新专区中供应工作程序池中定义的工作程序节点,并考虑将来进行工作负载调度。Red Hat OpenShift on IBM Cloud 会自动将区域的 failure-domain.beta.kubernetes.io/region 标签和区域的 failure-domain.beta.kubernetes.io/zone 标签添加到每个工作程序节点。 Kubernetes 调度程序使用这些标签在同一区域内的各个专区之间分布 pod。

如果您的集群中有多个工作节点池,请将该区域添加到所有这些池中,以便工作节点在集群中均匀分布。 请注意,将工作程序节点添加到集群时,新的工作程序节点将运行与集群主节点相同的 major.minor 版本,但运行该 major.minor 版本的最新工作程序节点补丁。

开始之前:请确保您拥有 [“操作员”或 “管理员” IAM 平台访问角色] (/docs/openshift?topic=openshift-iam-platform-access-roles)。

  1. 获取集群的 Location,并记下现有 Worker ZonesVPC ID

    ibmcloud oc cluster get --cluster CLUSTER-NAME
    

    示例输出

    ...
    VPC ID:        <VPC_ID>
    Workers:       3
    Worker Zones:  us-south-1
    ...
    Location:      Dallas   
    
  2. 列出集群位置的可用专区,以查看可以添加的其他专区。

    ibmcloud oc zone ls --provider vpc-gen2 | grep LOCATION
    
  3. 列出要添加的每个专区的可用 VPC 子网。 如果区域中没有 VPC 子网,请 创建 VPC 子网。 VPC 子网为集群中的工作节点和负载均衡服务提供 IP 地址,因此 创建一个包含足够IP地址的VPC子网,例如 256。 VPC 子网拥有的 IP 地址数量无法在后续进行修改。

    ibmcloud oc subnets --zone ZONE --provider vpc-gen2 --vpc-id VPC_ID
    
  4. 列出集群中的工作程序池并记下其名称。

    ibmcloud oc worker-pool ls --cluster CLUSTER-NAME
    
  5. 将专区添加到工作程序池。 对要添加到工作程序池的每个专区重复此步骤。 如果您有多个工作程序池,请将专区添加到所有工作程序池,以便在所有专区中均衡集群。 为每个工作池添加 --worker-pool 选项。

    如果要对不同的工作程序池使用不同的 VPC 子网,请对每个子网及其相应的工作程序池重复此命令。 任何新的工作程序节点都会添加到指定的 VPC 子网,但不会更改任何现有工作程序节点的 VPC 子网。

    ibmcloud oc zone add vpc-gen2 --zone ZONE --subnet-id SUBNET_ID --cluster CLUSTER-NAME --worker-pool WORKER_POOL_NAME
    
  6. 验证是否已将专区添加到集群。 在输出的 Worker Zones 字段中查找添加的专区。 请注意,在添加的专区中供应了新的工作程序节点,因此 Workers 字段中的工作程序总数已增加。

    ibmcloud oc cluster get --cluster CLUSTER-NAME
    

    示例输出

    Workers:       9
    Worker Zones:  us-south-1, us-south-2, us-south-3
    
  7. 要使用 Ingress 公开应用程序,请 更新用于公开路由器的 VPC 负载均衡器,以包括集群中新专区的子网。