企业级容器部署实战:基于ACK与ALB灵活构建云原生应用架构

本文涉及的产品
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月750个小时 15LCU
网络型负载均衡 NLB,每月750个小时 15LCU
简介: 这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务Kubernetes版(ACK)和应用负载均衡器(ALB)实现的解决方案。它强调了ACK相对于自建Kubernetes的便利性,包括优化的云服务集成、自动化管理和更强的生态系统支持。文章提供了部署云原生应用的步骤,包括一键部署和手动部署的流程,并指出手动部署更适合有技术背景的用户。作者建议在预算允许的情况下使用ACK,因为它能提供高效、便捷的管理体验。同时,文章也提出了对文档改进的建议,如添加更多技术细节和解释,以帮助用户更好地理解和实施解决方案。最后,展望了ACK未来在智能化、安全性与边缘计算等方面的潜在发展。水文一篇,太忙了,见谅!

前言

在信息化浪潮的不断推进下,企业IT架构面临的挑战日益严峻。传统架构的局限性,诸如僵化的资源分配、复杂的运维流程、缓慢的迭代速度,以及高昂的扩展成本,已逐渐成为制约业务敏捷性与创新力的瓶颈。随着云计算技术的蓬勃发展,云原生架构以其革命性的设计理念,为这些问题提供了一剂良方,迅速在全球范围内掀起了一场技术变革的风暴。

云原生架构之所以能够蔚然成风,核心在于其对软件开发、部署及运维模式的根本性重塑。它倡导微服务化,使得应用能够被拆分为多个小型、独立的服务单元,每个单元都能够独立部署、扩展和维护,大大提升了开发效率与系统的灵活性。容器技术和Kubernetes的兴起,更是为云原生应用的部署与管理提供了强大的技术支持,实现了资源的高效利用与应用的秒级伸缩。

本文将从理论到实践,逐步揭开ACK与ALB协同工作的神秘面纱,通过实战步骤指导读者快速部署云原生应用,同时深入探讨如何克服部署过程中可能遇到的挑战,最终实现应用的快速上线与动态扩展,为企业的数字化转型之旅铺就一条坚实的云原生之路。

欢迎大家参与评测活动,一起优化完善解决方案,评测活动地址:https://developer.aliyun.com/topic/ack-services

image.png

周周过往撰写的关于阿里云容器产品文章可见如下:

ACK集群应用部署进阶

基于ACR的镜像仓库管理

通过ACR快速部署网站应用实践

容器应用的高弹性架构实践

因为我们使用的是自建的K8S,确实也很少用到ACK,所以周周近期关于ACK的学习并不是很多,上述几篇大都是去年写的。

阿里云容器服务Kubernetes版

在这个解决方案下,我没有选择直接单刀直入开始学习架构,而是想先好好唠一唠ACK和自建K8S的区别。

所谓自建,就是自己在物理机或者ECS上部署开源Kubernetes平台。

而非自建,就是直接购买使用云上的PAAS服务,全套的从物理层到容器层的环境都由云厂商提供,底层也是基于开源的Kubernetes打造的,云上一般都自带管理工具,比如这里阿里云的ACK。

那么阿里云的 ACK 和原生的 K8S 的关系是什么呢?

其实,阿里云的 K8S 也是基于 K8S 二次开发和定制,因为 K8S 是开源的,所以ACK主要是针对云上的这种应用场景和运行的环境进行了优化和改进。

那么究竟是ACK好用还是原生K8S好用呢?

从我自己做运维的角度来看,如果预算充足,在不考虑成本的情况下,我建议还是使用ACK比较好。它具备更便捷的基础类管理,在管理方面更便捷,然后服务能力也更加强大,而且还深度的整合了阿里云的生态,像阿里云很多的产品,比如容器服务、ASM 服务网格,它都是可以直接去连接使用的,有了这些能力后,它就可以帮助用户快速的去构建发布。发布可以通过统一的发布平台,看日志排错可以通过统一的日志平台。只有极少数的紧急突发情况需要登录到K8S的容器环境里去进行生产的直接调试排错。所以阿里云的 ACK 可以理解为是更强大的K8S,更适应于云环境的K8S。

image.png

方案介绍

技术架构及相关基础设施和云服务

image.png

【专有名词解释如下】:

  • 普通用户(Client):代表的是最终用户使用的设备或应用程序,例如浏览器或者移动应用。这些客户端会发起HTTP或HTTPS请求来访问对应业务网站。

  • 负载均衡器ALB(Application Load Balancer):ALB是一种网络负载均衡解决方案,用于将流量分发到多个实例或服务上,以提高可用性和性能。在该架构中,ALB接收来自普通用户的请求,并根据配置策略将其路由到相应的容器服务Kubernetes版中的应用A或应用B。

  • 容器服务Kubernetes版:这是一个基于Kubernetes的容器编排平台,用于部署、管理和扩展容器化应用程序。在这个方案中,容器服务Kubernetes版提供了一个灵活且可扩展的基础架构环境,支持Service A和Service B的部署和管理。

  • 节点池:这是容器服务Kubernetes版的一部分,由一组运行Kubernetes工作负载的计算资源组成。每个节点池可以包含一个或多个Pod,这些Pod承载着实际的服务实例。

  • Pod1和Pod2:它们是容器化的应用程序实例,分别属于应用A和应用B。这些Pod通过Kubernetes进行管理和调度,在节点池内运行,直接处理来自ALB转发过来的流量。

  • VPC(Virtual Private Cloud):这是一种虚拟化的云计算环境,允许用户在安全、隔离的环境中构建和运行自己的IT基础设施。在这个架构中,VPC为整个系统提供了基础的网络环境,连接了各个组件和服务。

用户请求通过公网进入指定区域的VPC,经由应用负载均衡器(ALB)分配至Kubernetes集群,随后流入对应服务(Service A或B)下的节点池,最终由各服务的Pod实例处理请求,实现了外部访问到微服务应用的高效、有序传输。

方案部署

image.png

主要步骤如下:

1.部署准备
开始部署前,需要完成一些准备工作,包括申请阿里云账号、为账号充值、开通阿里云容器服务Kubernetes版等。

2.创建资源
创建专有的网络VPC,并将其与阿里云容器服务Kubernetes版关联起来。这一步通常涉及配置网络设置,比如子网、安全组规则以及其它必要的云资源。

3.部署微服务应用
将微服务应用A和B部署到ACK集群中,并配置Service和Ingress。Service是一种用于定义如何访问应用的方法,而Ingress则用于控制进入集群的流量,提供反向代理、负载均衡等功能。

4.验证及清理
最后,验证方案是否成功部署,然后释放不再需要的资源以节省成本。

页面下方还提供了两种部署方式的选择:“一键部署”“手动部署”,用户可以根据自身需求选择合适的部署方法。

一键部署基于ACK与ALB的云原生应用架构

点击一键部署,进入方案界面,点击部署准备。

image.png

需保证阿里云账号已注册,且账户余额大于100元。

image.png

进入一键部署界面,点击前往ROS控制台。

image.png

选择【可用区】和【实例规格】,下方设置实例密码:

image.png
image.png

填写完所有必选信息并确认后单击创建开始一键配置。如出现下图告警是因为角色权限缺失导致的,点击
开通链接开通即可。

image.png

确认开通。

image.png

最后创建成功后如图所示:

image.png

再登录到容器服务ACK管理控制台中,点击集群。

image.png

在左侧导航栏,选择网络,在展开的菜单中选择路由,找到创建的ALB Ingress的端点一列,获取端点域名,在浏览器中访问端点域名/a,查看返回值,例如:

image.png

手动部署基于ACK与ALB的云原生应用架构

在手动部署中,则是需要自己创建基础设施及应用。

其中,基础设施如下表,在此不过多赘述:

image.png
image.png

应用部署则是需要从创建创建无状态工作负载(Deployment)开始,创建完成后进入【工作负载】,在展开的菜单中选择【无状态】,点击右上角【使用YAML创建资源】,在新页面中的模板输入框中填入如下内容

分别在a和b中执行yaml脚本:

image.png

接下来添加服务。在左侧导航栏,选择【网络】,在展开的菜单中选择【服务】,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:

apiVersion: v1
kind: Service
metadata:
  name: ecs-ack-test-service-a
spec:
  selector:
    app: ecs-ack-test-service-a
  ports:
    - protocol: TCP
      port: 8080
      targetPort: 8080

最后,在左侧导航栏,选择【网络】,在展开的菜单中选择【路由】,检查ALB组件是否安装。点击右上角创建Ingress,在右侧弹出的创建Ingress面板中,网关类型点击ALB Ingress,如提示ALB组件未安装,则点击开始安装,否则点击面板右上角关闭按钮即可。

在左侧导航栏,选择【网络】,在展开的菜单中选择【路由】,点击右上角使用YAML创建资源,在新页面中的模板输入框中填入如下内容:

apiVersion: alibabacloud.com/v1
kind: AlbConfig
metadata:
  name:  ecs-ack-test-alb-config
spec:
  config:
    name: ecs-ack-test-alb
    addressType: Internet
    zoneMappings:
    - vSwitchId: vsw-bp1******ups
    - vSwitchId: vsw-bp1******8xm
  listeners:
    - port: 80
      protocol: HTTP

总的来说,手动部署确实会复杂很多,不仅需要逐一创建和配置VPC、ECS实例、ALB等云产品资源,确保这些基础架构能够良好协同工作;还要深入ACK集群内部,进行细致的资源规划、网络策略设定以及服务部署等操作,它要求操作者具备更深入的技术理解和实践能力,所以如果不是技术追求者,建议还是采用一键部署的方式来实现。

体验和建议

最近确实空闲时间也不多,在我看完手动部署后已经失去尝试的欲望了,所以我想,这个测评,最能体现出的是ROS资源编排所带来的效率提升与管理便捷性。它以声明式的方式,将云产品如 ECS、SLB、VPC 等一系列资源的创建、配置和依赖关系,统一在一个模板中定义并自动部署的能力。这种“代码化”的管理方式,大幅减少了人为错误,提高了部署的一致性和可复用性,还使得整个基础设施如同应用代码一样,变得可版本控制、可审计、易于维护。这是我目前最大的感受(QAQ)!!

第二点想说的是,其实这方案并没有提到太多的技术细节,又是经典的step by step指南,所谓的技术细节介绍几乎没有。假设这个方案要被企业真正投入使用,一键部署大多情况是指望不上,因为里面会预置这里测试的应用,而手动部署时特别是关于添加路由这一块只有步骤和脚本,完全没有任何说明。

image.png

而且排错方式写的是如果创建失败就删了重建,怎么说呢,我承认虽然有效且方便,但是是不是有些太过于粗犷了。

image.png

所以说这里建议增加一些关于路由脚本的解释,方便使用者理解,甚至用千问直接生成一个都可以:

image.png

当然,其他脚本也同理,有条件的情况下增加一些注释也是好的。

对于容器托管的优势,我其实前文也提到了,这里也不冠冕堂皇的说那些套话了,总结下来就是省时,省心,省力(但不省钱),所以说,如果预算充裕,完全可以直接考虑ACK服务的。

image.png

展望

目前,其实ACK(阿里云容器服务)已经紧跟时代脉搏,不断将前沿技术融入其服务体系中。展望未来,期望ACK能致力于构建一个以智能化为核心、深度整合安全与合规性、边缘计算能力的全方位云原生服务平台,继续推动技术边界的拓展,更好的帮助企业在全球数字化浪潮中敏捷前行,共创智能、安全、高效的数字未来。

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
2月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
558 108
|
2月前
|
运维 监控 数据可视化
小白也能部署应用,3个免费的容器化部署工具测评
本文对比了三款容器化部署工具:Docker Compose、Portainer 和 Websoft9。Docker Compose 适合开发者编排多容器应用,Portainer 提供图形化管理界面,而 Websoft9 则面向中小企业和非技术人员,提供一键部署与全流程运维支持,真正实现“开箱即用”。三款工具各有定位,Websoft9 更贴近大众用户需求。
小白也能部署应用,3个免费的容器化部署工具测评
|
3月前
|
人工智能 自然语言处理 开发工具
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
本文介绍统一多模态 Transformer(UMT)在跨模态表示学习中的应用与优化,涵盖模型架构、实现细节与实验效果,探讨其在图文检索、图像生成等任务中的卓越性能。
统一多模态 Transformer 架构在跨模态表示学习中的应用与优化
|
2月前
|
监控 Java API
Spring Boot 3.2 结合 Spring Cloud 微服务架构实操指南 现代分布式应用系统构建实战教程
Spring Boot 3.2 + Spring Cloud 2023.0 微服务架构实践摘要 本文基于Spring Boot 3.2.5和Spring Cloud 2023.0.1最新稳定版本,演示现代微服务架构的构建过程。主要内容包括: 技术栈选择:采用Spring Cloud Netflix Eureka 4.1.0作为服务注册中心,Resilience4j 2.1.0替代Hystrix实现熔断机制,配合OpenFeign和Gateway等组件。 核心实操步骤: 搭建Eureka注册中心服务 构建商品
487 3
|
25天前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
17天前
|
人工智能 JavaScript 前端开发
GenSX (不一样的AI应用框架)架构学习指南
GenSX 是一个基于 TypeScript 的函数式 AI 工作流框架,以“函数组合替代图编排”为核心理念。它通过纯函数组件、自动追踪与断点恢复等特性,让开发者用自然代码构建可追溯、易测试的 LLM 应用。支持多模型集成与插件化扩展,兼具灵活性与工程化优势。
82 6
|
1月前
|
人工智能 Cloud Native 中间件
划重点|云栖大会「AI 原生应用架构论坛」看点梳理
本场论坛将系统性阐述 AI 原生应用架构的新范式、演进趋势与技术突破,并分享来自真实生产环境下的一线实践经验与思考。
|
1月前
|
机器学习/深度学习 人工智能 vr&ar
H4H:面向AR/VR应用的NPU-CIM异构系统混合卷积-Transformer架构搜索——论文阅读
H4H是一种面向AR/VR应用的混合卷积-Transformer架构,基于NPU-CIM异构系统,通过神经架构搜索实现高效模型设计。该架构结合卷积神经网络(CNN)的局部特征提取与视觉Transformer(ViT)的全局信息处理能力,提升模型性能与效率。通过两阶段增量训练策略,缓解混合模型训练中的梯度冲突问题,并利用异构计算资源优化推理延迟与能耗。实验表明,H4H在相同准确率下显著降低延迟和功耗,为AR/VR设备上的边缘AI推理提供了高效解决方案。
278 0
|
23天前
|
机器学习/深度学习 自然语言处理 算法
48_动态架构模型:NAS在LLM中的应用
大型语言模型(LLM)在自然语言处理领域的突破性进展,很大程度上归功于其庞大的参数量和复杂的网络架构。然而,随着模型规模的不断增长,计算资源消耗、推理延迟和部署成本等问题日益凸显。如何在保持模型性能的同时,优化模型架构以提高效率,成为2025年大模型研究的核心方向之一。神经架构搜索(Neural Architecture Search, NAS)作为一种自动化的网络设计方法,正在为这一挑战提供创新性解决方案。本文将深入探讨NAS技术如何应用于LLM的架构优化,特别是在层数与维度调整方面的最新进展,并通过代码实现展示简单的NAS实验。
|
2月前
|
Web App开发 Linux 虚拟化
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件
152 0
Omnissa Horizon 8 2506 (8.16) - 虚拟桌面基础架构 (VDI) 和应用软件

热门文章

最新文章