详情页标题前

阿里云容器服务ACK配置Arm节点池-云淘科技

详情页1

容器服务ACK已完整支持云服务器Arm节点池的生命周期管理,包括节点添加、扩容、升级、删除。同时ACR支持多架构镜像的管理,使用统一镜像部署在Arm和x86节点池中,简化ACK基础组件和用户应用在多架构集群中的管理。本文详细介绍了如何创建Arm集群和节点池以及将应用部署到Arm节点上。

使用限制

  • 配置Arm节点池的集群版本≥1.20。

  • Arm节点的操作系统只支持Alibaba Cloud Linux 3。

  • 组件中心中支持Arm的组件列表:

    • 核心组件

    • 日志和监控

    • 存储

    • 网络

  • 应用市场的组件不支持Arm。

步骤一:创建Arm集群和节点池

重要

  • 在混用Arm和x86节点的容器集群中,为了防止非Arm应用和组件被错误的调度到Arm节点上,建议为Arm节点添加污点kubernetes.io/arch=arm64:NoSchedule,确保只有指定运行在Arm节点上的应用和组件才会被调度到Arm节点上。

  • 通过nodeSelector或者nodeAffinity指定Arm节点部署应用的情况下,在ACK Kubernetes 1.24及之后的版本中,调度器会自动容忍污点 kubernetes.io/arch=arm64:NoSchedule,您不需要额外添加容忍此污点的声明。

方案一:创建集群时添加Arm节点

使用这种方案,您可以创建一个只包含Arm节点的新集群。

创建集群,详细信息请参见创建Kubernetes托管版集群。在集群创建过程中,进行节点池配置时,在实例规格区域,架构选择ARM计算,然后按需选择所需实例规格。然后配置其他参数,完成集群创建。

说明

  • 您可以前往ECS实例可购买地域,查看实例在各地域的可购情况。

  • 您可以选择的Arm计算规格族群包括:

    • 通用型实例规格族g8y

    • 计算型实例规格族c8y

    • 内存型实例规格族r8y

    • 通用型实例规格族g6r

    • 计算型实例规格族c6r

方案二:创建一个Arm节点池

使用这种方案,您可以在已有集群上创建一个包含Arm节点的节点池。

创建节点池,详细信息请参见操作步骤。在节点池创建过程中,在实例规格区域,架构选择ARM计算,然后按需选择所需实例规格。然后配置其他参数,完成节点池创建。

说明

  • 您可以前往ECS实例可购买地域,查看实例在各地域的可购情况。

  • 您可以选择的Arm计算规格族群包括:

    • 通用型实例规格族g8y

    • 计算型实例规格族c8y

    • 内存型实例规格族r8y

    • 通用型实例规格族g6r

    • 计算型实例规格族c6r

步骤二:将应用部署到Arm节点上

为了让应用运行在Arm节点上,您的应用需要支持Arm架构。您可以使用多架构容器镜像,或者推送针对Arm编译的容器镜像。

指定应用运行在Arm节点上

如果您的集群中既有Arm节点也有非Arm节点,且您的应用只支持Arm架构,您需要指定应用运行在Arm节点上,以免应用Pod被调度到非Arm节点上导致启动失败。所有Arm节点上默认带有Label kubernetes.io/arch=arm64,您可以通过两种方式nodeSelector和nodeAffinity指定应用部署到Arm节点上。

方式一:使用nodeSelector指定应用部署到Arm节点上

您可以通过在Pod的Spec增加如下约束,指定应用部署在Arm节点上。

nodeSelector:
  kubernetes.io/arch: arm64 #指定Arm节点。

此约束指定Pod只能被调度到带有Label kubernetes.io/arm=arm64的节点上。

当Pod Spec上带有这个约束时,ACK调度器自动容忍节点上的污点kubernetes.io/arch=arm64:NoSchedule

下面的示例将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

方式二:使用nodeAffinity指定应用部署到Arm节点上

除了使用nodeSelector,您还可以通过在Pod上增加如下约束,使用节点亲和性声明指定应用部署到Arm节点上。

affinity:
  nodeAffinity:
    requiredDuringSchedulingIgnoredDuringExecution:
      nodeSelectorTerms:
      - matchExpressions:
        - key: kubernetes.io/arch
          operator: In
          values:
          - arm64

此约束指定Pod只能被调度到带有Label kubernetes.io/arm=arm64的节点上。

当Pod Spec上带有此约束时,ACK调度器自动容忍节点上的污点kubernetes.io/arch=arm64:NoSchedule

下面的示例同样指定将Nginx部署到Arm节点上。

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 2
  template:
    metadata:
      labels:
        app: nginx
    spec:
      affinity:
        nodeAffinity:
          requiredDuringSchedulingIgnoredDuringExecution:
            nodeSelectorTerms:
            - matchExpressions:
              - key: kubernetes.io/arch
                operator: In
                values:
                - arm64
      containers:
      - name: nginx
        image: nginx:1.14.2

使用多架构容器镜像

多架构容器镜像支持在一个镜像内包含多种架构的镜像,例如同时支持amd64和Arm的镜像,它可以运行在Arm节点上,也可以运行在amd64节点上。为了推送多架构镜像,镜像客户端和镜像服务器都需要支持多架构,目前阿里云镜像服务ACR已经支持多架构镜像。

下面的实例演示如何构建和推送一个nginx多架构镜像。

  1. 准备支持amd64的镜像和支持Arm的镜像。本例中使用的两个镜像为registry.cn-hangzhou.aliyuncs.com/acs/myapp:amd64registry.cn-hangzhou.aliyuncs.com/acs/myapp:arm

  2. 执行如下命令,创建多架构镜像。

    docker manifest create registry.cn-hangzhou.aliyuncs.com/acs/myapp \
        --amend registry.cn-hangzhou.aliyuncs.com/acs/myapp:amd64 \
        --amend registry.cn-hangzhou.aliyuncs.com/acs/myapp:arm64
  3. 使用docker manifest push命令,将多架构镜像registry.cn-hangzhou.aliyuncs.com/acs/myapp:latest推送到镜像仓库。

    docker manifest push registry.cn-hangzhou.aliyuncs.com/acs/myapp

    接下来就可以在Pod中使用这个镜像了。

将社区多架构镜像同步到自己的仓库中

很多开源软件都提供了容器镜像,并且支持多架构。为了让应用在ACK上部署更快,您可以将这些镜像同步到您自己的ACR仓库中。下面以nginx:1.23.2为例,介绍如何在自己的ACR仓库中添加一份nginx多架构镜像。

  1. 执行如下命令,拉取amd64镜像,并将tag重命名为nginx:1.23.2-amd64

    docker pull --platform linux/amd64 nginx:1.23.2
    docker tag nginx:1.23.2 nginx:1.23.2-amd64
  2. 执行如下命令,拉取Arm镜像,并将tag重命名为nginx:1.23.2-arm64

    docker pull --platform linux/arm64 nginx:1.23.2
    docker tag nginx:1.23.2 nginx:1.23.2-arm64
  3. 执行如下命令,创建多架构镜像,请将下面的仓库地址替换成您的仓库地址。

    docker manifest create registry.cn-hangzhou.aliyuncs.com/acs/nginx:1.23.2 \ #
        --amend nginx:1.23.2-arm64 \
        --amend nginx:1.23.2-amd64
  4. 执行如下命令,推送多架构镜像,请将下面的仓库地址替换成您的仓库地址。

    docker manifest push registry.cn-hangzhou.aliyuncs.com/acs/nginx:1.23.2

相关文档

云服务器ECS ARM实例规格族

内容没看懂? 不太想学习?想快速解决? 有偿解决: 联系专家

阿里云企业补贴进行中: 马上申请

腾讯云限时活动1折起,即将结束: 马上收藏

同尘科技为腾讯云授权服务中心。

购买腾讯云产品享受折上折,更有现金返利:同意关联,立享优惠

转转请注明出处:https://www.yunxiaoer.com/170691.html

(0)
上一篇 2023年12月10日 下午1:25
下一篇 2023年12月10日
详情页2

相关推荐

  • 阿里云容器服务ACK使用操作系统Alibaba Cloud Linux 2-云淘科技

    ACK目前已经全面支持Alibaba Cloud Linux 2的节点创建,并结合Alibaba Cloud Linux 2的高内核特性提供了多场景的优化。本文介绍ACK中使用Alibaba Cloud Linux 2操作系统的优势,及ACK基于Alibaba Cloud Linux 2提供的多场景优化。 背景信息 Alibaba Cloud Linux 2…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK快速开始-云淘科技

    # 获取sealer工具 wget -c http://sealer.oss-cn-beijing.aliyuncs.com/sealers/sealer-v0.5.2-linux-amd64.tar.gz && \ tar -xvf sealer-v0.5.2-linux-amd64.tar.gz -C /usr/bin # 获取容器服务A…

    阿里云容器服务 2023年12月10日
  • 信息流广告,信息流部分建议宽度830px,只针对默认列表样式,顺序随机
  • 阿里云容器服务ACK常见问题-云淘科技

    本文介绍您在使用托管版与专有版容器集群ACK时可能遇到的常见问题以及解决方案。 您在使用容器服务ACK时如果收到容器服务ACK返回的错误信息,可查阅容器服务ACK错误码匹配解决方案。如果您没有收到具体的错误信息,可根据以下问题分类匹配问题场景和解决方案。 分类 相关文档 授权 授权管理FAQ(包括鉴权失败、RBAC授权使用、RAM授权使用等常见的授权使用问题…

    阿里云容器服务 2023年12月10日
  • 阿里云容器服务ACK入门概述-云淘科技

    阿里云容器服务Kubernetes版(简称容器服务ACK)提供高性能的容器化应用管理服务,让您轻松高效地在云端运行Kubernetes容器化应用。本文介绍容器服务ACK的快速使用流程、快速使用方式及文档使用指引,帮助您快速上手容器服务ACK。 快速使用流程 ACK的快速使用流程如下图所示。 使用方式 ACK的快速入门包括: 首次使用容器服务Kubernete…

    2023年12月10日
  • 阿里云容器服务ACK什么是容器服务 Kubernetes 版-云淘科技

    阿里云容器服务 Kubernetes 版 ACK(Container Service for Kubernetes)是全球首批通过Kubernetes一致性认证的容器服务平台,提供高性能的容器应用管理服务,支持企业级Kubernetes容器化应用的生命周期管理,让您轻松高效地在云端运行Kubernetes容器化应用。 产品形态 托管和专有容器服务 Kuber…

    2023年12月10日

联系我们

400-800-8888

在线咨询: QQ交谈

邮件:admin@example.com

工作时间:周一至周五,9:30-18:30,节假日休息

关注微信
本站为广大会员提供阿里云、腾讯云、华为云、百度云等一线大厂的购买,续费优惠,保证底价,买贵退差。