容器服务ACK已完整支持云服务器Arm节点池的生命周期管理,包括节点添加、扩容、升级、删除。同时ACR支持多架构镜像的管理,使用统一镜像部署在Arm和x86节点池中,简化ACK基础组件和用户应用在多架构集群中的管理。本文详细介绍了如何创建Arm集群和节点池以及将应用部署到Arm节点上。
使用限制
- 配置Arm节点池的集群版本≥1.20。
- Arm节点的操作系统只支持Alibaba Cloud Linux 3。
- 组件中心中支持Arm的组件列表:
- 核心组件
- 日志和监控
- 存储
- 网络
- 应用市场的组件不支持Arm。
步骤一:创建Arm集群和节点池
方案一:创建集群时添加Arm节点
使用这种方案,您可以创建一个只包含Arm节点的新集群。
创建集群,详细信息请参见创建Kubernetes托管版集群。在集群创建过程中,进行节点池配置时,在实例规格区域,架构选择ARM计算,然后按需选择所需实例规格。然后配置其他参数,完成集群创建。
说明
- 您可以前往ECS实例可购买地域,查看实例在各地域的可购情况。
- 您可以选择的Arm计算规格族群包括:
方案二:创建一个Arm节点池
使用这种方案,您可以在已有集群上创建一个包含Arm节点的节点池。
创建节点池,详细信息请参见创建节点池。在节点池创建过程中,在实例规格区域,架构选择ARM计算,然后按需选择所需实例规格。然后配置其他参数,完成节点池创建。
说明
- 您可以前往ECS实例可购买地域,查看实例在各地域的可购情况。
- 您可以选择的Arm计算规格族群包括:
步骤二:将应用部署到Arm节点上
为了让应用运行在Arm节点上,您的应用需要支持Arm架构。您可以使用多架构容器镜像,或者推送针对Arm编译的容器镜像。
指定应用运行在Arm节点上
如果您的集群中既有Arm节点也有非Arm节点,且您的应用只支持Arm架构,您需要指定应用运行在Arm节点上,以免应用Pod被调度到非Arm节点上导致启动失败。
所有Arm节点上默认带有Label:
kubernetes.io/arch=arm64
,您可以通过Pod nodeSelector指定应用运行在Arm节点上。使用如下实例,可以将nginx部署在Arm节点上。apiVersion: apps/v1
kind: Deployment
metadata:
name: nginx
spec:
selector:
matchLabels:
app: nginx
replicas: 2
template:
metadata:
labels:
app: nginx
spec:
nodeSelector:
kubernetes.io/arch: arm64 #指定Arm节点。
containers:
- name: nginx
image: nginx:1.14.2
使用多架构容器镜像
多架构容器镜像支持在一个镜像内包含多种架构的镜像,例如同时支持amd64和Arm的镜像,它可以运行在Arm节点上,也可以运行在amd64节点上。为了推送多架构镜像,镜像客户端和镜像服务器都需要支持多架构,目前阿里云镜像服务ACR已经支持多架构镜像。
下面的实例演示如何构建和推送一个nginx多架构镜像。
将社区多架构镜像同步到自己的仓库中
很多开源软件都提供了容器镜像,并且支持多架构。为了让应用在ACK上部署更快,您可以将这些镜像同步到您自己的ACR仓库中。下面以nginx:1.23.2
为例,介绍如何在自己的ACR仓库中添加一份nginx多架构镜像。