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

本文涉及的产品
网络型负载均衡 NLB,每月750个小时 15LCU
传统型负载均衡 CLB,每月750个小时 15LCU
应用型负载均衡 ALB,每月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能致力于构建一个以智能化为核心、深度整合安全与合规性、边缘计算能力的全方位云原生服务平台,继续推动技术边界的拓展,更好的帮助企业在全球数字化浪潮中敏捷前行,共创智能、安全、高效的数字未来。

相关实践学习
通过Ingress进行灰度发布
本场景您将运行一个简单的应用,部署一个新的应用用于新的发布,并通过Ingress能力实现灰度发布。
容器应用与集群管理
欢迎来到《容器应用与集群管理》课程,本课程是“云原生容器Clouder认证“系列中的第二阶段。课程将向您介绍与容器集群相关的概念和技术,这些概念和技术可以帮助您了解阿里云容器服务ACK/ACK Serverless的使用。同时,本课程也会向您介绍可以采取的工具、方法和可操作步骤,以帮助您了解如何基于容器服务ACK Serverless构建和管理企业级应用。 学习完本课程后,您将能够: 掌握容器集群、容器编排的基本概念 掌握Kubernetes的基础概念及核心思想 掌握阿里云容器服务ACK/ACK Serverless概念及使用方法 基于容器服务ACK Serverless搭建和管理企业级网站应用
相关文章
|
26天前
|
运维 Cloud Native 持续交付
深入理解云原生架构及其在现代企业中的应用
随着数字化转型的浪潮席卷全球,企业正面临着前所未有的挑战与机遇。云计算技术的迅猛发展,特别是云原生架构的兴起,正在重塑企业的IT基础设施和软件开发模式。本文将深入探讨云原生的核心概念、关键技术以及如何在企业中实施云原生策略,以实现更高效的资源利用和更快的市场响应速度。通过分析云原生架构的优势和面临的挑战,我们将揭示它如何助力企业在激烈的市场竞争中保持领先地位。
|
24天前
|
Kubernetes Cloud Native 微服务
探索云原生技术:容器化与微服务架构的融合之旅
本文将带领读者深入了解云原生技术的核心概念,特别是容器化和微服务架构如何相辅相成,共同构建现代软件系统。我们将通过实际代码示例,探讨如何在云平台上部署和管理微服务,以及如何使用容器编排工具来自动化这一过程。文章旨在为开发者和技术决策者提供实用的指导,帮助他们在云原生时代中更好地设计、部署和维护应用。
|
7天前
|
存储 Kubernetes 开发者
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
Docker 是一种开源的应用容器引擎,允许开发者将应用程序及其依赖打包成可移植的镜像,并在任何支持 Docker 的平台上运行。其核心概念包括镜像、容器和仓库。镜像是只读的文件系统,容器是镜像的运行实例,仓库用于存储和分发镜像。Kubernetes(k8s)则是容器集群管理系统,提供自动化部署、扩展和维护等功能,支持服务发现、负载均衡、自动伸缩等特性。两者结合使用,可以实现高效的容器化应用管理和运维。Docker 主要用于单主机上的容器管理,而 Kubernetes 则专注于跨多主机的容器编排与调度。尽管 k8s 逐渐减少了对 Docker 作为容器运行时的支持,但 Doc
54 5
容器化时代的领航者:Docker 和 Kubernetes 云原生时代的黄金搭档
|
19天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
本文基于2024云栖大会演讲,探讨了软件供应链攻击的快速增长趋势及对企业安全的挑战。文中介绍了如何利用阿里云容器服务ACK、ACR和ASM构建云原生软件供应链安全,涵盖容器镜像的可信生产、管理和分发,以及服务网格ASM实现应用无感的零信任安全,确保企业在软件开发和部署过程中的安全性。
|
19天前
|
人工智能 Kubernetes Cloud Native
阿里云容器服务,智算时代云原生操作系统
2024云栖大会,阿里巴巴研究员易立分享了阿里云容器服务的最新进展。容器技术已成为云原生操作系统的基石,支持多样化的应用场景,如自动驾驶、AI训练等。阿里云容器服务覆盖公共云、边缘云、IDC,提供统一的基础设施,助力客户实现数字化转型和技术创新。今年,阿里云在弹性计算、网络优化、存储解决方案等方面进行了多项重要升级,进一步提升了性能和可靠性。
|
24天前
|
运维 Cloud Native 持续交付
云原生技术深度探索:重塑现代IT架构的无形之力####
本文深入剖析了云原生技术的核心概念、关键技术组件及其对现代IT架构变革的深远影响。通过实例解析,揭示云原生如何促进企业实现敏捷开发、弹性伸缩与成本优化,为数字化转型提供强有力的技术支撑。不同于传统综述,本摘要直接聚焦于云原生技术的价值本质,旨在为读者构建一个宏观且具体的技术蓝图。 ####
|
1月前
|
Kubernetes Cloud Native Docker
云原生之旅:从传统架构到容器化服务的演变
随着技术的快速发展,云计算已经从简单的虚拟化服务演进到了更加灵活和高效的云原生时代。本文将带你了解云原生的概念、优势以及如何通过容器化技术实现应用的快速部署和扩展。我们将以一个简单的Python Web应用为例,展示如何利用Docker容器进行打包和部署,进而探索Kubernetes如何管理这些容器,确保服务的高可用性和弹性伸缩。
|
1月前
|
Kubernetes Cloud Native 开发者
云原生入门:从容器到微服务
本文将带你走进云原生的世界,从容器技术开始,逐步深入到微服务架构。我们将通过实际代码示例,展示如何利用云原生技术构建和部署应用。无论你是初学者还是有经验的开发者,这篇文章都将为你提供有价值的信息和启示。
|
1月前
|
Cloud Native 持续交付 云计算
云原生技术在现代IT架构中的转型力量####
本文深入剖析了云原生技术的精髓,探讨其在现代IT架构转型中的关键作用与实践路径。通过具体案例分析,展示了云原生如何赋能企业实现更高效的资源利用、更快的迭代速度以及更强的系统稳定性,为读者提供了一套可借鉴的实施框架与策略。 ####
25 0
|
1月前
|
消息中间件 运维 Cloud Native
云原生架构下的微服务优化策略####
本文深入探讨了云原生环境下微服务架构的优化路径,针对服务拆分、通信效率、资源管理及自动化运维等核心环节提出了具体的优化策略。通过案例分析与最佳实践分享,旨在为开发者提供一套系统性的解决方案,以应对日益复杂的业务需求和快速变化的技术挑战,助力企业在云端实现更高效、更稳定的服务部署与运营。 ####