随着企业在数字化转型中的进一步深化,基础设施的灵活性和扩展能力成为了关键挑战。传统的IDC数据中心受制于物理容量的限制,难以实现动态扩容,因而缺乏必要的弹性能力。这时,ACK One注册集群[1]弹性因其高度的灵活性和丰富的资源选择,成为了解决这一问题的最佳方案。
ACK One注册集群优势
传统IDC数据中心自建Kubernetes集群存在容量受限和弹性不足的问题。通过将IDC数据中心自建的Kubernetes集群接入到ACK One注册集群进行统一管理,可以有效克服这些局限性,并带来以下好处:
资源弹性伸缩:通过与阿里云资源的整合,实现计算资源的按需扩展,提高资源利用率,降低成本。
成本优化:利用阿里云的按需付费模式,避免了IDC数据中心中固定投资的沉没成本,根据实际使用量计费,更加经济高效。
ACK One注册集群架构及接入流程
上图是ACK One注册集群整体架构图。目前可以通过以下步骤快速完成IDC数据中心Kubernetes集群接入注册集群:
1、首先通过控制台或者命令行工具创建注册集群。更多请参考文档通过控制台创建注册集群[2]。
2、在IDC数据中心目标Kubernetes集群部署agent代理组件。
3、在目标集群检查代理组件运行情况。
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 9sACK One注册集群云上弹性的优势
ACK One注册集群云上弹性解决方案,以其强大的功能和灵活的资源选择,帮助企业解决上述难题。
1.丰富的弹性资源选择:
a.按需使用的ECI(弹性容器实例),无需自购服务器,按量计费,成本透明且可控。
b.普通的ECS(弹性计算服务),可在几分钟内扩展计算资源。
c.GPU机型,满足高性能计算任务的需求,如AI训练和大数据分析。
2.高度灵活的扩展能力:
实现业务量的动态扩展和缩减,全面提升计算资源的利用率。
可根据业务需求进行自动化的扩展和回收,极大地减少人工运维负担。
可根据业务需求进行灵活的资源配置,实现当IDC数据中心资源不足时,自动扩展云上资源,有效地解决高峰期业务压力,保证系统的稳定运行和用户体验。
场景一:注册集群
云上ECS节点池(CPU/GPU)
通过ACK One注册集群功能,实现统一管理,快速搭建混合云环境。当本地数据中心的计算资源受限时,通过云上节点池功能,扩展云端计算资源,满足业务的增长需求。
ACK One注册集群节点池具备如下的优势:
支持多种操作系统[3]镜像(ContainerOS、Alibaba Cloud Linux等)。
支持不同计费类型(按量付费、包年包月、抢占式实例)。
支持不同架构的机型(CPU、GPU)。
下面我们将通过以下步骤来完成创建和使用云上节点池。
1.准备自定义脚本,由于实际业务场景中很可能会使用到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]。
2.为了方便业务后续调度的需要,可以通过在自定义脚本中接收阿里云注册集群下发的系统环境变量。更多关于为自定义脚本添加环境,请参考文档在注册集群中创建节点池[5]。
3.保存并配置脚本定义到注册集群配置项。
4.创建节点池并扩容。
5.执行以下命令,查看节点池扩容结果。
kubectl get no预期输出:其中格式为.的节点为通过节点池扩容的云上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.26.执行如下命令,创建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
借助ACK虚拟节点(Virtual Node)可以将Pod快速地调度到弹性容器实例ECI上运行,无需购买和管理ECS节点,实现资源的高效利用。下面我们将通过以下步骤来完成部署ack-virtual-node并且调度Pod到ECI:
1.通过注册集群运维管理或者命令行工具安装ack-virtual-node组件。更多关于组件内容,请参考文档通过虚拟节点将Pod调度到ECI运行[6]。
2.执行以下命令,查看虚拟节点部署情况。
kubectl get no预期输出:其中格式为virtual-kubelet-的节点为虚拟节点。
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.23.执行如下命令,通过指定标签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
实现资源多级弹性调度
通过ack-co-scheduler组件结合云上节点池以及ECI,实现多级弹性调度,优先使用IDC数据中心的资源,然后是云上节点池,最后是ECI的资源,确保资源的合理分配和高效利用。
1.通过注册集群运维管理或者命令行工具安装ack-co-scheduler组件。更多关于组件内容,请参考文档通过ack-co-scheduler实现多级弹性调度[7]。
2.IDC数据中心资源不足时,实现多级调度.
a.执行如下命令,创建调度策略,当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数据中心资源不足时,调度到云上节点池EOFb.执行如下命令,创建调度策略,当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总结
阿里云ACK One注册集群云上节点池以其卓越的弹性资源选择和简便的操作步骤,为企业带来了前所未有的灵活性和扩展能力。无论是普通计算、容器实例,还是高性能计算任务,阿里云都能快速响应业务需求,从而助力企业更高效地迈向数字化转型的未来。
立即访问阿里云ACK One官网[8],了解更多详情,开始您的智能扩展之旅吧!
欢迎加入ACK One客户交流钉钉与我们一同交流。(钉钉群号:35688562)
相关链接:
[1]ACK One注册集群
https://help.aliyun.com/zh/ack/overview-9?spm=a2c4g.11186623.0.i2
[2]通过控制台创建注册集群
https://help.aliyun.com/zh/ack/create-a-cluster-registration-proxy-and-register-a-kubernetes-cluster-deployed-in-a-data-center?spm=a2c4g.11186623.0.0.4361791ckiZK3p
[3]操作系统
https://help.aliyun.com/zh/ack/ack-managed-and-ack-dedicated/user-guide/overview-of-os-images?spm=a2c4g.11186623.0.0.584a35c33r4oWz
[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?spm=a2c4g.11186623.0.0.4e265801Kao18a#31c3b06745ucy
[6]通过虚拟节点将Pod调度到ECI运行
https://help.aliyun.com/zh/ack/scale-out-elastic-container-instances?spm=a2c4g.11186623.0.0.499b2682yCjCHN
[7]通过ack-co-scheduler实现多级弹性调度
https://help.aliyun.com/zh/ack/use-ack-co-scheduler-to-achieve-multilevel-resource-scheduling?spm=a2c4g.11186623.0.0.210b4a3aqwaa85
[8]阿里云ACK One官网
https://help.aliyun.com/zh/ack/distributed-cloud-container-platform-for-kubernetes/product-overview/?spm=a2c4g.11186623.0.i11
/ END /