4.9. 使用多架构计算机器管理集群
4.9.1. 使用多架构计算机器在集群中调度工作负载 复制链接链接已复制到粘贴板!
使用不同架构的计算节点在集群中部署工作负载需要注意和监控集群。您可能需要进行进一步的操作,才能成功将 pod 放置到集群的节点中。
如需有关节点关联性、调度、污点和容限和容忍的更多信息,请参阅以下文档:
4.9.1.1. 多架构节点工作负载部署示例 复制链接链接已复制到粘贴板!
在使用不同架构的计算节点将工作负载调度到具有不同架构的计算节点上之前,请考虑以下用例:
- 使用节点关联性在节点上调度工作负载
您可以只允许将工作负载调度到其镜像支持的一组节点上,您可以在 pod 模板规格中设置
spec.affinity.nodeAffinity
字段。将
nodeAffinity
设置为特定架构的部署示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 1
- 指定支持的构架。有效值包括
amd64
,arm64
, 或这两个值。
- 为特定架构污点每个节点
您可以污点节点,以避免与其架构不兼容的工作负载调度到该节点上。如果集群正在使用
MachineSet
对象,您可以在.spec.template.spec.taints
字段中添加参数,以避免在带有不支持的架构的节点上调度工作负载。在污点节点前,您必须缩减
MachineSet
对象或删除可用的机器。您可以使用以下命令之一缩减机器集:oc scale --replicas=0 machineset <machineset> -n openshift-machine-api
$ oc scale --replicas=0 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 有关扩展机器集的更多信息,请参阅"修改计算机器集"。
带有污点集的
MachineSet
示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow 您还可以运行以下命令来在特定节点上设置污点:
oc adm taint nodes <node-name> multi-arch.openshift.io/arch=arm64:NoSchedule
$ oc adm taint nodes <node-name> multi-arch.openshift.io/arch=arm64:NoSchedule
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 创建默认容限
您可以运行以下命令来注解命名空间,以便所有工作负载都获得相同的默认容限:
oc annotate namespace my-namespace \ 'scheduler.alpha.kubernetes.io/defaultTolerations'='[{"operator": "Exists", "effect": "NoSchedule", "key": "multi-arch.openshift.io/arch"}]'
$ oc annotate namespace my-namespace \ 'scheduler.alpha.kubernetes.io/defaultTolerations'='[{"operator": "Exists", "effect": "NoSchedule", "key": "multi-arch.openshift.io/arch"}]'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow - 在工作负载中容忍架构污点
在具有定义污点的节点上,工作负载不会调度到该节点上。但是,您可以通过在 pod 的规格中设置容限来允许调度它们。
具有容限的部署示例
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 本例部署也可以在指定了
multi-arch.openshift.io/arch=arm64
污点的节点上允许。- 使用带有污点和容限的节点关联性
当调度程序计算一组要调度 pod 的节点时,容限可能会扩大集合,而节点关联性会限制集合。如果将污点设置为特定架构的节点,则需要以下示例容限才能调度 pod。
使用节点关联性和容限集的部署示例。
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
其他资源
4.9.2. 在多架构计算机器上的镜像流中导入清单列表 复制链接链接已复制到粘贴板!
在带有多架构计算机器的 OpenShift Container Platform 4.14 集群中,集群中的镜像流不会自动导入清单列表。您必须手动将默认的 importMode
选项改为 PreserveOriginal
选项,才能导入清单列表。
先决条件
-
已安装 OpenShift Container Platform CLI (
oc
)。
流程
以下示例命令演示了如何对
ImageStream
cli-artifacts 进行补丁,以便cli-artifacts:latest
镜像流标签作为清单列表导入。oc patch is/cli-artifacts -n openshift -p '{"spec":{"tags":[{"name":"latest","importPolicy":{"importMode":"PreserveOriginal"}}]}}'
$ oc patch is/cli-artifacts -n openshift -p '{"spec":{"tags":[{"name":"latest","importPolicy":{"importMode":"PreserveOriginal"}}]}}'
Copy to Clipboard Copied! Toggle word wrap Toggle overflow
验证
您可以通过检查镜像流标签来检查是否正确导入的清单列表。以下命令将列出特定标签的各个架构清单。
oc get istag cli-artifacts:latest -n openshift -oyaml
$ oc get istag cli-artifacts:latest -n openshift -oyaml
Copy to Clipboard Copied! Toggle word wrap Toggle overflow 如果存在
dockerImageManifests
对象,则清单列表导入成功。dockerImageManifests
对象的输出示例Copy to Clipboard Copied! Toggle word wrap Toggle overflow