×

您可以添加或删除计算机器集中的机器实例。

如果您需要修改计算机器集的方面(而不是扩展),请参阅修改计算机器集

先决条件

您只能在机器API可运行的集群中使用高级机器管理和扩展功能。具有用户预配基础设施的集群需要额外的验证和配置才能使用机器API。

基础设施平台类型为none的集群无法使用机器API。即使连接到集群的计算机器安装在支持此功能的平台上,此限制仍然适用。此参数安装后无法更改。

要查看集群的平台类型,请运行以下命令:

$ oc get infrastructure cluster -o jsonpath='{.status.platform}'

手动扩展计算机器集

要添加或删除计算机器集中的机器实例,您可以手动扩展计算机器集。

此指南适用于完全自动化的、安装程序预配的基础设施安装。定制的、用户预配的基础设施安装没有计算机器集。

先决条件
  • 安装OpenShift Container Platform集群和oc命令行。

  • 以具有cluster-admin权限的用户身份登录到oc

步骤
  1. 通过运行以下命令查看集群中的计算机器集:

    $ oc get machinesets.machine.openshift.io -n openshift-machine-api

    计算机器集以<clusterid>-worker-<aws-region-az>的形式列出。

  2. 通过运行以下命令查看集群中的计算机器:

    $ oc get machines.machine.openshift.io -n openshift-machine-api
  3. 通过运行以下命令在要删除的计算机器上设置注释:

    $ oc annotate machines.machine.openshift.io/<machine_name> -n openshift-machine-api machine.openshift.io/delete-machine="true"
  4. 通过运行以下命令之一来扩展计算机器集:

    $ oc scale --replicas=2 machinesets.machine.openshift.io <machineset> -n openshift-machine-api

    或者

    $ oc edit machinesets.machine.openshift.io <machineset> -n openshift-machine-api

    或者您可以应用以下YAML来扩展计算机器集:

    apiVersion: machine.openshift.io/v1beta1
    kind: MachineSet
    metadata:
      name: <machineset>
      namespace: openshift-machine-api
    spec:
      replicas: 2

    您可以向上或向下扩展计算机器集。新机器需要几分钟才能可用。

    默认情况下,机器控制器会尝试清空由机器支持的节点,直到成功为止。在某些情况下,例如 pod disruption budget 配置错误,清空操作可能无法成功。如果清空操作失败,机器控制器将无法继续删除机器。

    您可以通过在特定机器中添加注释machine.openshift.io/exclude-node-draining来跳过清空节点。

验证
  • 通过运行以下命令验证是否已删除目标机器:

    $ oc get machines.machine.openshift.io

计算机器集删除策略

支持三种删除选项:RandomNewestOldest。默认值为Random,这意味着在缩减计算机器集时会随机选择和删除机器。可以通过修改特定的计算机器集来根据用例设置删除策略。

spec:
  deletePolicy: <delete_policy>
  replicas: <desired_replica_count>

还可以通过向感兴趣的机器添加注释machine.openshift.io/delete-machine=true来优先删除特定机器,而不管删除策略如何。

默认情况下,OpenShift Container Platform 路由器 pod 部署在工作节点上。因为路由器需要访问某些集群资源(包括 Web 控制台),所以除非您首先重新定位路由器 pod,否则请勿将工作节点计算机器集缩减到0

自定义计算机器集可用于需要在特定节点上运行服务,并且在工作节点计算机器集缩减时控制器会忽略这些服务的用例。这可以防止服务中断。