This documentation is for a release that is no longer maintained
See documentation for the latest supported version 3 or the latest supported version 4.4.3. 调整 worker 节点
如果您在部署过程中错误地定义了 worker 节点的大小,可以通过创建一个或多个新机器集来调整它们,先对它们进行扩展,并缩小原始的机器集,然后再删除它们。
4.3.1. 了解机器集和机器配置池之间的区别 复制链接链接已复制到粘贴板!
MachineSet
对象描述了与云或机器供应商相关的 OpenShift Container Platform 节点。
MachineConfigPool
对象允许 MachineConfigController
组件在升级过程中定义并提供机器的状态。
MachineConfigPool
对象允许用户配置如何将升级应用到机器配置池中的 OpenShift Container Platform 节点。
NodeSelector
对象可以被一个到 MachineSet
对象的引用替换。
4.3.2. 手动扩展机器集 复制链接链接已复制到粘贴板!
要在机器集中添加或删除机器实例,您可以手动扩展机器集。
这个指南与全自动的、安装程序置备的基础架构安装相关。自定义的、用户置备的基础架构安装没有机器集。
先决条件
-
安装 OpenShift Container Platform 集群和
oc
命令行。 -
以具有
cluster-admin
权限的用户身份登录oc
。
流程
查看集群中的机器集:
oc get machinesets -n openshift-machine-api
$ oc get machinesets -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 机器集以
<clusterid>-worker-<aws-region-az>
的形式列出。查看集群中的机器:
oc get machine -n openshift-machine-api
$ oc get machine -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 在您要删除的机器上设置注解:
oc annotate machine/<machine_name> -n openshift-machine-api machine.openshift.io/cluster-api-delete-machine="true"
$ oc annotate machine/<machine_name> -n openshift-machine-api machine.openshift.io/cluster-api-delete-machine="true"
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 进行 cordon 操作,排空您要删除的节点:
oc adm cordon <node_name> oc adm drain <node_name>
$ oc adm cordon <node_name> $ oc adm drain <node_name>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 扩展机器集:
oc scale --replicas=2 machineset <machineset> -n openshift-machine-api
$ oc scale --replicas=2 machineset <machineset> -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 或者:
oc edit machineset <machineset> -n openshift-machine-api
$ oc edit machineset <machineset> -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以应用以下 YAML 来扩展机器集:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您可以扩展或缩减机器集。需要过几分钟以后新机器才可用。
验证
验证删除预期的机器:
oc get machines
$ oc get machines
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
4.3.3. 机器集删除策略 复制链接链接已复制到粘贴板!
Random
、Newest
和 Oldest
是三个支持的删除选项。默认值为 Random
,表示在扩展机器时随机选择并删除机器。通过修改特定机器集,可以根据用例设置删除策略:
spec: deletePolicy: <delete_policy> replicas: <desired_replica_count>
spec:
deletePolicy: <delete_policy>
replicas: <desired_replica_count>
无论删除策略是什么,都可通过在相关机器上添加 machine.openshift.io/cluster-api-delete-machine=true
注解来指定机器删除的优先级。
默认情况下,OpenShift Container Platform 路由器 Pod 部署在 worker 上。由于路由器需要访问某些集群资源(包括 Web 控制台),除非先重新放置了路由器 Pod,否则请不要将 worker 机器集扩展为 0
。
当用户需要特定的服务必须运行在特定节点,在 worker 机器集进行缩减时需要忽略这些服务时,可以使用自定义机器集。这可防止服务被中断。
4.3.4. 创建默认的集群范围节点选择器 复制链接链接已复制到粘贴板!
您可以组合使用 pod 上的默认集群范围节点选择器和节点上的标签,将集群中创建的所有 pod 限制到特定节点。
使用集群范围节点选择器时,如果您在集群中创建 pod,OpenShift Container Platform 会将默认节点选择器添加到 pod,并将该 pod 调度到具有匹配标签的节点。
您可以通过编辑调度程序 Operator 自定义资源(CR)来配置集群范围节点选择器。您可为节点、机器集或机器配置添加标签。将标签添加到机器集可确保节点或机器停机时,新节点具有标签。如果节点或机器停机,添加到节点或机器配置的标签不会保留。
您可以向 pod 添加额外的键/值对。但是,您无法为一个默认的键添加不同的值。
流程
添加默认的集群范围节点选择器:
编辑调度程序 Operator CR 以添加默认的集群范围节点选择器:
oc edit scheduler cluster
$ oc edit scheduler cluster
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用节点选择器的调度程序 Operator CR 示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 使用适当的
<key>:<value>
对添加节点选择器。
完成此更改后,请等待重新部署
openshift-kube-apiserver
项目中的 pod。这可能需要几分钟。只有重新部署 pod 后,默认的集群范围节点选择器才会生效。通过使用机器集或直接编辑节点,为节点添加标签:
在创建节点时,使用机器集向由机器集管理的节点添加标签:
运行以下命令,将标签添加到
MachineSet
对象中:oc patch MachineSet <name> --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"<key>"="<value>","<key>"="<value>"}}]' -n openshift-machine-api
$ oc patch MachineSet <name> --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"<key>"="<value>","<key>"="<value>"}}]' -n openshift-machine-api
1 Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 为每个标识添加
<key>/<value>
对。
例如:
oc patch MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"type":"user-node","region":"east"}}]' -n openshift-machine-api
$ oc patch MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c --type='json' -p='[{"op":"add","path":"/spec/template/spec/metadata/labels", "value":{"type":"user-node","region":"east"}}]' -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以应用以下 YAML 来向机器集中添加标签:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc edit
命令验证标签是否已添加到MachineSet
对象中:例如:
oc edit MachineSet abc612-msrtw-worker-us-east-1c -n openshift-machine-api
$ oc edit MachineSet abc612-msrtw-worker-us-east-1c -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow MachineSet
对象示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 通过缩减至
0
并扩展节点来重新部署与该机器集关联的节点:例如:
oc scale --replicas=0 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api
$ oc scale --replicas=0 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow oc scale --replicas=1 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api
$ oc scale --replicas=1 MachineSet ci-ln-l8nry52-f76d1-hl7m7-worker-c -n openshift-machine-api
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 当节点就绪并可用时,使用
oc get
命令验证该标签是否已添加到节点:oc get nodes -l <key>=<value>
$ oc get nodes -l <key>=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get nodes -l type=user-node
$ oc get nodes -l type=user-node
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-c-vmqzp Ready worker 61s v1.22.1
NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-c-vmqzp Ready worker 61s v1.22.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
直接向节点添加标签:
为节点编辑
Node
对象:oc label nodes <name> <key>=<value>
$ oc label nodes <name> <key>=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如,若要为以下节点添加标签:
oc label nodes ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 type=user-node region=east
$ oc label nodes ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 type=user-node region=east
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 提示您还可以应用以下 YAML 来向节点添加标签:
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 使用
oc get
命令验证标签是否已添加到节点:oc get nodes -l <key>=<value>,<key>=<value>
$ oc get nodes -l <key>=<value>,<key>=<value>
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 例如:
oc get nodes -l type=user-node,region=east
$ oc get nodes -l type=user-node,region=east
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 输出示例
NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 Ready worker 17m v1.22.1
NAME STATUS ROLES AGE VERSION ci-ln-l8nry52-f76d1-hl7m7-worker-b-tgq49 Ready worker 17m v1.22.1
Copy to Clipboard Copied! Toggle word wrap Toggle overflow