基于阿里云容器服务Kubernetes版(ACK)| 容器化管理云上应用
在现行的大环境下,企业上云容器化应用托管已经逐渐成为主流,其中以能够自动部署、扩展、管理容器化应用以及能实现应用的快速上线与灵活调度的Kubernetes为首选方案。那么如何高效、快速地在ACK上编排与部署应用,阿里云官方提供了详细的部署方案,下面我就带大家来详细体验。
在部署开始之前,先来了解一下企业上云容器化管理云上应用,为什么选择ACK?
ACK
阿里云容器服务Kubernetes版(ACK)作为业界领先的容器管理和编排服务,凭借其强大的技术实力和丰富的云服务生态,为企业级用户提供了一系列卓越的优势,助力现代化应用的快速构建、部署与运维。
ACK的优势
灵活多样的集群形态
ACK支持托管集群、专有集群、Serverless Kubernetes等多种部署模式,满足企业不同阶段和场景的需求,从轻量级快速启动到大规模复杂应用部署,均能灵活应对。
高可用性和弹性伸缩
高可用性的集群部署模式,确保应用持续稳定运行。自动伸缩功能,根据业务负载自动扩缩容,高效应对业务峰谷,保证成本效益与服务质量。
安全性和合规性
集成阿里云强大的安全服务体系,ACK提供多层次的安全防护,包括网络隔离、访问控制、密钥管理等,确保容器应用的安全运行。
ACK的应用场景
大规模微服务架构
对于拥有复杂微服务架构的大型企业,ACK能够有效管理成百上千个服务,通过自动化的服务发现、负载均衡和滚动更新功能,简化服务运维,保证高可用性和低延迟。
弹性伸缩的互联网应用
针对电商、社交、直播等互联网应用,ACK能够根据实时流量自动扩缩容,利用ECS实例和弹性容器实例(ECI)的组合,快速响应业务高峰,同时在闲时释放资源,降低成本。
快速迭代的DevOps环境
在持续集成和持续部署(CI/CD)流程中,通过与GitOps等现代DevOps实践的结合,能大幅缩短软件交付周期,加速应用迭代速度,减少停机时间,提高开发效率。
混合云与多云部署
对于需要跨云或混合云部署的企业,ACK支持统一管理多个Kubernetes集群,无论是公有云、私有云还是边缘计算场景,都能实现资源的统一调度和应用的一致性管理。
了解完ACK的优势以及应用场景之后,下面就开始我们今天的部署操作,在部署开始之前先来简单介绍一下部署方案。
部署方案介绍
今天的部署方案使用镜像在ACK中部署应用,使用ALB作为Ingress对外提供服务,方案中包含两个应用,应用A和应用B,其中应用A依赖应用B,以此来模拟真实场景中应用依赖关系。整体的方案架构如下图所示
部署操作
关于基于ACK实现灵活调度,高效编排,容器化管理云上应用的部署操作,官方提供了一键部署和手动部署两种方案,通常来说,一键部署方案更适合新手,操作相对比较简单。而手动部署适合一键部署无法操作的场景,通过手动部署来实现,操作相对比较复杂,需要有服务器操作经验的开发者操作。部署方案地址:https://www.aliyun.com/solution/tech-solution/ack-services?spm=a2c6h.29361360.J_9175035460.3.5872495cX2saC2#deployment
资源准备
在开始部署之前,首先需要你登录阿里云账号,如果没有阿里云账号,则需要先注册阿里云账号,阿里云注册账号页面地址:https://account.aliyun.com/register/qr_register.htm?spm=a2c4g.2808202.0.0.10c8a985UFgAU6
注册账号之后,需要对账号充值,保证账号余额大于100元,具体的充值操作您可以登录阿里云用户中心,登录地址:https://billing-cost.console.aliyun.com/home
点击【充值】按钮,进入充值页面,选择充值方式,输入充值金额 ,勾选协议,点击【确认充值】
在弹出的支付码弹框中,打开手机支付宝扫码付款即可
充值成功回到用户中心首页可以看到账户余额大于 100 元
除此之外,介绍一下本方案的技术架构涉及到的以下基础设施和云服务:
- 1个专有网络VPC:为应用型负载均衡ALB、云服务器ECS、阿里云容器服务Kubernetes版ACK集群等云资源形成云上私有网络。
- 2台交换机:将多可用区的3台云服务器ECS,阿里云容器服务Kubernetes版ACK集群和应用型负载均衡ALB,使它们能够在同一网络上进行通信,并提供基本的网络分段和隔离功能。
- 1个公网应用型负载均衡ALB:对外提供访问,作为ACK集群的Ingress实现。
- 1个阿里云容器服务Kubernetes版ACK集群
- 3台云服务器ECS:用于部署模拟应用服务,为ACK使用。
一键部署
准备好资源之后,点击方案页面的【一键部署】tab
打开 一键配置模板链接 前往ROS控制台,系统自动打开使用新资源创建资源栈的面板,并在模板内容区域展示YAML文件的详细信息,选择地域,这里我选择地域【杭州】,资源栈名称默认,ACK托管版集群名称默认,可用区1可以随便选择,这里我选择【可用区B】,可用区2选择除【可用区B】外的其他可用区即可
实例规格选择 通用算力型,推荐使用通用算力型,ecs.u1-c1m2.xlarge
实例密码非必填,可以直接点击【下一步】进入资源信息确认页面
确认资源信息及计费信息后点击【创建】等待资源创建,这里弹框提示 1项异常
点击【开通链接】进入到 容器服务ACK 开通页面,点击【立即开通】
开通成功后回到弹窗页面刷新依赖检查,再次点击【继续创建】
进入到资源栈创建页面,可以查看创建进度
整个资源创建过程需要耐心等待,由于创建的资源比较多,大概10~30分钟左右,在等待过程中,你也可以点击【事件】查看资源执行情况
等待了30分钟依然没有创建完成,这里我选择了【快速取消】
回滚成功后,我再次尝试一键部署方案,
再次尝试后,等待大概40分钟还是没有创建完成
不再等待了。正常情况下资源栈创建完成后,登录 容器服务ACK管理控制台 可以看到创建好的集群资源
点击【集群】,选择创建的集群,点击名称开始操作
点击【网络】,在展开的菜单中选择【路由】,找到创建的ALB Ingress的【端点】一列,获取【端点域名】,在浏览器中访问【端点域名/a】,查看返回值
[ { "serviceName": "a", "uuid": "f1b99e7a-e731-4a3b-aa22-5e8a3abd577c" }, { "serviceName": "b", "uuid": "d1eee41e-3259-4eb2-a018-43b7df64589b" } ]
说明模拟应用服务正常运行,到这里本次部署操作就圆满完成了。
释放资源
在本次部署操作中,一共创建了3台云服务器ECS实例、1个应用型负载均衡ALB实例、2个交换机、1个专有网络VPC、1个阿里云容器服务Kubernetes版ACK集群。测试完方案后,您可以参考以下规则处理对应产品的实例,避免继续产生费用。
首先登录 ROS控制台 ,释放资源栈下的资源,即3台云服务器ECS实例、1个应用型负载均衡ALB实例、2个交换机、1个专有网络VPC、1个阿里云容器服务Kubernetes版ACK集群
点击【资源栈】,在【资源栈】页面的顶部选择部署的资源栈所在地域,找到资源栈,然后在其右侧【操作列】,单击【删除】
在【删除资源栈】对话框,选择【删除方式】为【释放资源】,然后点击【确定】,根据提示完成资源释放
点击【确定】选择短信验证后,输入短信验证码完成删除操作
测评体验
此方案内容是否提供了足够的技术细节,确保能够理解方案的深层原理和实施方法?
关于基于ACK实现灵活调度,高效编排,容器化管理云上应用的部署方案,方案提供了方案结构图以及场景描述【模拟应用服务对外提供两个 APIa和b,APIa依赖APIb。APIb返回服务名称以及一个UUID;APIa返回服务名称,一个UUID以及通过HTTP请求的APIb的返回值。】
通过方案描述以及方案结构图,可以方便大家理解整体部署的深层原理,这点是认可的,比较好。
在体验过程中是否得到足够的引导以及文档帮助?
在本次部署方案的体验过程中,整个文档的操作说明比较清晰明了,操作内容也容易理解,只是在对于CS开通服务的步骤文档没有提到
导致在实际操作过程中报错,不过基于以往的部署经验也是很容易处理的。
您认为容器化应用托管的优势有哪些?在企业上云过程中,是否愿意使用容器化应用托管?
可以说容器化应用托管,最大的特点优势就是可以实现资源的高效利用、更高扩展性和弹性、快速迭代部署及DevOps流程优化,从而全面提升业务灵活性与竞争力。那么再企业上云过程中,个人是愿意使用容器化托管的。传统的部署方案,整体部署操作比较费时费力,且后期的运维效率低下,资源利用率低,扩展性以及快速迭代部署的能力比较弱。那么使用容器化应用托管之后,可以在极大的有效利用资源的同时降低运维难度,提高应用的快速迭代部署能力。
在场景中使用到具体云产品的体验
在场景体验中,对于云服务器ECS的操作,还是比较熟悉的,对于资源编排ROS的操作,个人在实验操作过程中也是体验过很多次了,但是对于这次的体验确实不能称之为完美。首先来说,本次资源栈ROS编排,我的操作是没有成功的,尝试了两次部署,花费了1个多小时等待时间,仍然没有成功,每次总是卡在 60% 进度的地方无法完成后续的操作
并且一直卡在60% 的进度位置,整个过程也没有任何的报错信息提示,部署过程一直在【部署中】,但是长久的等待还是没有成功,希望后续可以在资源栈ROS编排的详情页面的【事件】这里增加【执行日志】列,用于展示ROS编排过程中每个资源创建的执行情况,如果报错也方便快速排查
或者也可以是在【资源】列表增加一个【执行日志】的列,方便查看具体资源的执行日志,对于执行日志报错的情况也能快速响应处理,不影响整体资源栈ROS编排的最终执行结果
其他方面都比较好了,希望后续可以补充我上面提到的内容就更完美了。