项目目标
本文旨在基于阿里云云原生产品家族,打造云、边、端一体化的应用分发与生命周期管理能力,并构建完善的云原生应用管理与交付体系。核心组件包括边缘容器(ACK@Edge)和云原生应用自动化引擎OpenKruise,最终目标是为企业数字化转型提供低门槛、高效率的应用部署与运维解决方案。
最终效果
通过本方案,企业能够轻松享受云计算带来的诸多优势:
- 应用在云端、边缘节点和终端设备之间实现统一分发与智能调度。
- 容器实例与计算资源处于同一网络平面,网络性能相比传统overlay方案提升20%。
- 应用部署、升级、弹性扩缩容、QoS调节、健康检查等操作实现全自动化管理。
技术方案
整体方案基于阿里云容器服务ACK(Alibaba Cloud Container Service for Kubernetes)构建,并补充以下核心组件:
- 边缘容器(ACK@Edge):支持不同系统架构和网络环境下的应用分发与全生命周期管理。
- 自研Terway网络插件:将弹性网卡ENI直接分配给容器实例,使容器与计算资源共享同一网络平面,彻底消除传统overlay网络带来的性能损耗。
- 云原生应用自动化引擎OpenKruise:源自阿里巴巴经济体大规模应用部署、发布与管理的最佳实践,有效解决Kubernetes上应用的自动化管理难题。
- 云原生应用管理与交付体系:涵盖国内首个开放云原生应用中心Cloud Native App Hub,提供丰富的应用市场与便捷的交付能力。
环境与依赖
本方案运行在阿里云平台,需提前满足以下条件:
- 拥有阿里云账号,并开通容器服务ACK。
- 已创建Kubernetes集群(推荐使用阿里云ACK托管版)。
- 如需使用边缘容器,需额外开通ACK@Edge服务并配置边缘节点。
- 安装
kubectl命令行工具,并正确配置集群连接信息。 - 安装
helm(用于部署OpenKruise等组件)。
项目结构
本方案不涉及自定义项目结构,主要依赖阿里云控制台和预置组件。核心部署对象包括:
- Terway网络插件(默认集成于ACK集群)
- OpenKruise控制器(通过Helm Chart部署)
- 边缘容器应用(通过ACK@Edge控制台或kubectl部署)
核心实现
1. 边缘容器部署
通过ACK@Edge,实现云、边、端一体化的应用分发。具体操作步骤如下:
- 在阿里云容器服务控制台中,创建边缘节点池,并注册边缘设备。
- 将应用以Deployment或StatefulSet形式部署到边缘节点。
- 利用Terway网络插件(默认启用),确保容器实例直接使用弹性网卡ENI,与计算节点共享同一网络平面。
性能对比:传统overlay容器网络需要额外封装与解封装,而自研Terway方案性能高出20%。
2. OpenKruise自动化引擎
OpenKruise项目源自阿里巴巴经济体的大规模实践,极大地扩展了Kubernetes原生控制器能力。部署方式如下:
helm repo add openkruise https://openkruise.github.io/charts/
helm install kruise openkruise/kruise --version 1.0.0 (版本以实际发布为准)
安装完成后,可使用CloneSet、Advanced StatefulSet等CRD实现高级部署策略,例如:
apiVersion: apps.kruise.io/v1alpha1
kind: CloneSet
metadata:
name: sample-app
spec:
replicas: 3
selector:
matchLabels:
app: sample
template:
metadata:
labels:
app: sample
spec:
containers:
- name: main
image: nginx:latest
updateStrategy:
type: InPlaceIfPossible
此配置可实现原地升级,大幅减少Pod重建带来的资源浪费。
3. 云原生应用管理与交付
通过Cloud Native App Hub,开发者可以轻松查找、分享和部署云原生应用。集成方式如下:
- 在阿里云容器服务控制台中,选择“应用市场”->“Cloud Native App Hub”,搜索所需应用。
- 一键部署到目标集群。
- 结合OpenKruise,为应用配置自动化扩缩容、健康检查等策略。
配置说明
关键配置项及注意事项:
- Terway网络插件:无需额外配置,ACK集群创建时默认启用。如需自定义,请参考阿里云官方文档。
- OpenKruise:安装后默认启用所有CRD,建议根据实际业务需求调整资源配额。
- 边缘容器:边缘节点需支持Docker或containerd运行环境,网络需具备公网或专线连接。
运行方法
- 确认集群节点状态正常:
kubectl get nodes。 - 部署边缘应用:
kubectl apply -f edge-app.yaml。 - 验证OpenKruise控制器:
kubectl get pods -n kruise-system。 - 通过Cloud Native App Hub部署应用时,在控制台点击“部署”并等待完成。
结果验证
完成部署后,通过以下清单验证项目成果:
- 边缘容器应用已成功运行在指定边缘节点,且可通过
kubectl get pods -o wide查看节点分布。 - 使用
kubectl exec进入容器,确认网络连通性,测试延迟或带宽(参考基线性能)。 - OpenKruise的CloneSet支持原地升级,执行
kubectl rollout restart后观察Pod是否原地重启。 - Cloud Native App Hub中的应用可正常部署,并纳入OpenKruise管理。
实际案例中,奥组委通过容器服务ACK在欧洲助力奥运OCS频道敏捷开发运维;西门子使用ACK实现MindSphere微服务架构与DevOps;迅雷使用容器混合云方案实现云下云上混合调度。这些案例充分验证了本方案的可行性与可靠性。
常见问题
- 边缘节点无法注册:检查网络防火墙是否开放必要端口,详细步骤请参考阿里云ACK@Edge文档。
- OpenKruise安装失败:确认Helm版本≥3.0,且集群拥有足够的RBAC权限。
- 应用分发延迟:边缘节点与云端网络状况不佳时,建议使用ACK@Edge的离线分发机制。
后续优化
OpenKruise后续将持续覆盖部署、升级、弹性扩缩容、QoS调节、健康检查、迁移修复等更多Kubernetes自动化能力。阿里云也在不断加大云原生技术栈产品体系的研发投入,并积极回馈开源社区,推动云原生标准制定与落地。建议持续关注阿里云官方文档及OpenKruise开源项目的最新更新。
