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

本文涉及的产品
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: 这篇内容概述了云原生架构的优势,特别是通过阿里云容器服务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搭建和管理企业级网站应用
相关文章
|
16天前
|
负载均衡 网络协议 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基本概念和类型,包括桥接网络、宿主网络、覆盖网络和 Macvlan 网络等,并提供了创建、管理和配置自定义网络的实用命令。通过掌握这些知识,开发者可以构建更健壮和灵活的容器化应用,提高应用的可扩展性和安全性。
|
9天前
|
供应链 安全 Cloud Native
阿里云容器服务助力企业构建云原生软件供应链安全
针对软件供应链的攻击事件在以每年三位数的速度激增,其中三方或开源软件已经成为攻击者关注的重要目标,其攻击方式和技术也在不断演进。通过供应链的传播,一个底层软件包的漏洞的影响范围可以波及世界。企业亟需更加标准和完善的供应链风险洞察和防护机制。本文将结合最佳实践的形式,面向容器应用完整的生命周期展示如何基于容器服务ACK/ACR/ASM助力企业构建云原生软件供应链安全。
|
5天前
|
存储 Kubernetes 关系型数据库
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
阿里云ACK备份中心,K8s集群业务应用数据的一站式灾备方案
|
15天前
|
Kubernetes 监控 Cloud Native
云原生入门:从传统应用到容器化部署的旅程
【9月更文挑战第19天】在数字化浪潮中,企业正迅速将目光投向云原生技术,以实现更快的应用开发和更灵活的资源管理。本文将通过一个简单示例引导读者理解如何将传统应用转变为云原生应用,并部署至云端。我们将探索容器化技术的基础,以及它如何帮助企业解锁现代软件交付的速度和效率。准备好让你的应用乘上云原生的快车了吗?让我们开始这段令人兴奋的旅程吧!
|
1月前
|
存储 Kubernetes 负载均衡
CentOS 7.9二进制部署K8S 1.28.3+集群实战
本文详细介绍了在CentOS 7.9上通过二进制方式部署Kubernetes 1.28.3+集群的全过程,包括环境准备、组件安装、证书生成、高可用配置以及网络插件部署等关键步骤。
181 3
CentOS 7.9二进制部署K8S 1.28.3+集群实战
|
1月前
|
Kubernetes 负载均衡 前端开发
二进制部署Kubernetes 1.23.15版本高可用集群实战
使用二进制文件部署Kubernetes 1.23.15版本高可用集群的详细教程,涵盖了从环境准备到网络插件部署的完整流程。
54 2
二进制部署Kubernetes 1.23.15版本高可用集群实战
|
17天前
|
Kubernetes Cloud Native Linux
云原生入门:Kubernetes的简易部署与应用
【8月更文挑战第49天】在云原生的世界里,Kubernetes(K8s)是一颗璀璨的星。本文将带你走进K8s的世界,从安装到简单应用,轻松驾驭这个强大的容器编排工具。让我们一起探索云原生的奥秘,解锁新技能!
|
27天前
|
Cloud Native 持续交付 云计算
云原生之旅:从传统应用到容器化微服务
随着数字化转型的浪潮不断推进,企业对IT系统的要求日益提高。本文将引导你了解如何将传统应用转变为云原生架构,重点介绍容器化和微服务的概念、优势以及实施步骤,旨在帮助读者掌握将应用迁移到云平台的关键技巧,确保在云计算时代保持竞争力。
22 5
|
29天前
|
Kubernetes Docker Python
如何在K8s中使用Python应用
一文带你了解如何在K8s中使用Python应用
21 4
|
5天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
下一篇
无影云桌面