阿里云ACKOne注册集群云上弹性:扩展业务新利器

科技梦想在奔跑 2024-10-08 18:18:59

随着企业在数字化转型中的进一步深化,基础设施的灵活性和扩展能力成为了关键挑战。传统的 IDC 数据中心受制于物理容量的限制,难以实现动态扩容,因而缺乏必要的弹性能力。这时,ACK One 注册集群[1]云上弹性因其高度的灵活性和丰富的资源选择,成为了解决这一问题的最佳方案。

ACK One 注册集群优势

Cloud Native

传统 IDC 数据中心自建 Kubernetes 集群存在容量受限和弹性不足的问题。通过将 IDC 数据中心自建的 Kubernetes 集群接入到 ACK One 注册集群进行统一管理,可以有效克服这些局限性,并带来以下好处:资源弹性伸缩:通过与阿里云资源的整合,实现计算资源的按需扩展,提高资源利用率,降低成本。成本优化:利用阿里云的按需付费模式,避免了 IDC 数据中心中固定投资的沉没成本,根据实际使用量计费,更加经济高效。

ACK One 注册集群架构及接入流程

Cloud Native

上图是 ACK One 注册集群整体架构图。目前可以通过以下步骤快速完成 IDC 数据中心 Kubernetes 集群接入注册集群:

首先通过控制台或者命令行工具创建注册集群。更多请参考文档通过控制台创建注册集群[2]。在 IDC 数据中心目标 Kubernetes 集群部署 agent 代理组件。在目标集群检查代理组件运行情况。kubectl -n kube-system get pod |grep ack-cluster-agent

预期输出:

ack-cluster-agent-5f7d568f6-6fc4k 1/1 Running 0 9sack-cluster-agent-5f7d568f6-tf6fp 1/1 Running 0 9s

ACK One 注册集群云上弹性的优势

Cloud Native

ACK One 注册集群云上弹性解决方案,以其强大的功能和灵活的资源选择,帮助企业解决上述难题。

丰富的弹性资源选择:按需使用的 ECI(弹性容器实例),无需自购服务器,按量计费,成本透明且可控。普通的 ECS(弹性计算服务),可在几分钟内扩展计算资源。GPU 机型,满足高性能计算任务的需求,如 AI 训练和大数据分析。高度灵活的扩展能力:实现业务量的动态扩展和缩减,全面提升计算资源的利用率。可根据业务需求进行自动化的扩展和回收,极大地减少人工运维负担。可根据业务需求进行灵活的资源配置,实现当 IDC 数据中心资源不足时,自动扩展云上资源,有效地解决高峰期业务压力,保证系统的稳定运行和用户体验。

场景一:注册集群云上

ECS 节点池(CPU/GPU)

Cloud Native

通过 ACK One 注册集群功能,实现统一管理,快速搭建混合云环境。当本地数据中心的计算资源受限时,通过云上节点池功能,扩展云端计算资源,满足业务的增长需求。

ACK One 注册集群节点池具备如下的优势:

支持多种操作系统[3]镜像(ContainerOS、Alibaba Cloud Linux 等)。支持不同计费类型(按量付费、包年包月、抢占式实例)。支持不同架构的机型(CPU、GPU)。

下面我们将通过以下步骤来完成创建和使用云上节点池。

准备自定义脚本,由于实际业务场景中很可能会使用到 GPU 机型,可以通过把以下检测脚本添加到自定义脚本中,来完成 GPU 机型的检测,并且根据检测结果安装相应的驱动。更多关于 GPU 驱动相关信息请参考 GPU 节点安装新版本驱动[4]。#!/bin/bash# 检查lspci是否安装if ! which lspci &>/dev/null; then yum -y install pciutilsfi# 检查节点是否存在GPU设备if lspci | grep -i nvidia &>/dev/null; then echo "该节点为GPU节点,请安装相关驱动。" fi

由于 IDC 数据中心 Kubernetes 集群的部署方式存在差异,因此自定义脚本也有一定的差异,更多关于自定义脚本的详细介绍,请参考文档在注册集群中创建节点池[5]。

为了方便业务后续调度的需要,可以通过在自定义脚本中接收阿里云注册集群下发的系统环境变量。更多关于为自定义脚本添加环境,请参考文档在注册集群中创建节点池。保存并配置脚本定义到注册集群配置项。创建节点池并扩容。执行以下命令,查看节点池扩容结果。kubectl get no

预期输出:其中格式为 <RegionID>.<IP> 的节点为通过节点池扩容的云上 ECS 节点。

NAME STATUS ROLES AGE VERSIONcn-***.192.168.XX.XXX Ready <none> 5h43m v1.28.2idc-worker-001 Ready <none> 5h51m v1.28.2idc-worker-002 Ready <none> 5h54m v1.28.2master-0906-001 Ready control-plane 4d3h v1.28.2执行如下命令,创建 Pod 到注册集群节点池。kubectl apply -f - <<EOFapiVersion: apps/v1kind: Deploymentmetadata: labels: app: nginx name: nginx-deployment-cloud namespace: defaultspec: replicas: 2 selector: matchLabels: app: nginx template: metadata: labels: app: nginx spec: nodeSelector: alibabacloud.com/nodepool-id: np6d13af2bb56546128*** # 此处为注册集群节点池ID containers: - image: 'registry.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2' imagePullPolicy: IfNotPresent name: nginx ports: - containerPort: 80 protocol: TCP resources: limits: cpu: 500mEOF

场景二:ack-virtual-node

实现业务 Pod 调度到 ECI

Cloud Native

借助 ACK 虚拟节点(Virtual Node)可以将 Pod 快速地调度到弹性容器实例 ECI 上运行,无需购买和管理 ECS 节点,实现资源的高效利用。

下面我们将通过以下步骤来完成部署 ack-virtual-node 并且调度 Pod 到 ECI:

通过注册集群运维管理或者命令行工具安装 ack-virtual-node 组件。更多关于组件内容,请参考文档通过虚拟节点将 Pod 调度到 ECI 运行[6]。执行以下命令,查看虚拟节点部署情况。kubectl get no

预期输出:其中格式为 virtual-kubelet-<ZoneID> 的节点为虚拟节点。

NAME STATUS ROLES AGE VERSIONidc-worker-001 Ready <none> 6h21m v1.28.2idc-worker-002 Ready <none> 6h24m v1.28.2master-0906-001 Ready control-plane 4d3h v1.28.2virtual-kubelet-cn-*** Ready agent 4d v1.28.2执行如下命令,通过指定标签 alibabacloud.com/eci=true 将 Pod 到调度到 ECI。kubectl run nginx --image=registry.cn-hangzhou.aliyuncs.com/eci_open/nginx:1.14.2 -l alibabacloud.com/eci=true

场景三:ack-co-scheduler

实现资源多级弹性调度

Cloud Native

通过 ack-co-scheduler 组件结合云上节点池以及 ECI,实现多级弹性调度,优先使用 IDC 数据中心的资源,然后是云上节点池,最后是 ECI 的资源,确保资源的合理分配和高效利用。通过注册集群运维管理或者命令行工具安装 ack-co-scheduler 组件。更多关于组件内容,请参考文档通过 ack-co-scheduler 实现多级弹性调度[7]。IDC 数据中心资源不足时,实现多级调度执行如下命令,创建调度策略,当 IDC 数据中心资源不足时,调度到注册集群节点池。kubectl apply -f - <<EOFapiVersion: scheduling.alibabacloud.com/v1alpha1kind: ResourcePolicymetadata: name: schedued-to-node-poolspec: selector: app: nginx strategy: prefer units: - resource: idc - resource: ecs nodeSelector: alibabacloud.com/nodepool-id: np6d13af2bb** # 此处为云上节点池ID,当IDC数据中心资源不足时,调度到云上节点池EOF执行如下命令,创建调度策略,当 IDC 数据中心资源不足时,调度到 ECI。kubectl apply -f - <<EOFapiVersion: scheduling.alibabacloud.com/v1alpha1kind: ResourcePolicymetadata: name: schedued-to-ecispec: selector: app: nginx strategy: prefer units: - resource: idc - resource: eci # 当IDC数据中心资源不足时,调度到ECIEOF

总结

Cloud Native

阿里云 ACK One 注册集群云上节点池以其卓越的弹性资源选择和简便的操作步骤,为企业带来了前所未有的灵活性和扩展能力。无论是普通计算、容器实例,还是高性能计算任务,阿里云都能快速响应业务需求,从而助力企业更高效地迈向数字化转型的未来。

立即访问阿里云 ACK One 官网[8],了解更多详情,开始您的智能扩展之旅吧!

欢迎通过钉钉扫描下方二维码或搜索钉钉群号加入 ACK One 客户交流钉钉与我们一同交流。(钉钉群号:35688562)

相关链接:

[1] ACK One 注册集群

https://help.aliyun.com/zh/ack/overview-9

[2] 通过控制台创建注册集群

https://help.aliyun.com/zh/ack/create-a-cluster-registration-proxy-and-register-a-kubernetes-cluster-deployed-in-a-data-center

[3] 操作系统

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/overview-of-os-images

[4] GPU 节点安装新版本驱动

https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/manually-upgrade-the-nvidia-driver-of-a-node?spm=a2c4g.11186623.0.0.587b2682pPmdSQ#df910d7024dyd

[5] 在注册集群中创建节点池

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/user-guide/create-a-node-pool

[6] 通过虚拟节点将 Pod 调度到 ECI 运行

https://help.aliyun.com/zh/ack/scale-out-elastic-container-instances

[7] 通过 ack-co-scheduler 实现多级弹性调度

https://help.aliyun.com/zh/ack/use-ack-co-scheduler-to-achieve-multilevel-resource-scheduling

[8] ACK One 官网

https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/product-overview/

0 阅读:0

科技梦想在奔跑

简介:感谢大家的关注