与阿里云容器服务 ACK 发行版的深度对话第一弹:如何借助 sealer 实现快速构建 & 部署

本文涉及的产品
Serverless 应用引擎 SAE,800核*时 1600GiB*时
服务治理 MSE Sentinel/OpenSergo,Agent数量 不受限
简介: 本文将以ACK 发行版的口吻为大家详细讲解阿里巴巴的开源集群镜像技术 sealer,以及如何借助它来实现阿里云 ACK 服务的快速稳定交付。

作者:淮右、王飞、瑜佳


记者:阿里云原生的读者朋友们大家好,今天应广大感兴趣朋友们的强烈要求,我们邀请来了「阿里云容器服务 ACK 发行版」做客我们的栏目,为大家讲述它的身世之谜,以及它是如何和伙伴们配合,让大家在自有基础设施上获得一致的最佳体验。所以走过路过千万不容错过哦~ 


阿里云容器服务 ACK 发行版(简称 ACK Distro):大家好,我是阿里云容器服务 ACK 发行版,大家可以叫我的小名,ACK Distro,本次采访我将为大家详细讲解我的好伙伴:阿里巴巴的开源集群镜像技术 sealer,以及我是如何借助它来实现阿里云 ACK 服务的快速稳定交付。


ACK Distro 是什么


记者:在介绍伙伴之前,让我们先进入第一个版块吧。很多新来的读者还不清楚您是谁,及您的功能是什么,不妨先来做个自我介绍。


ACK Distro:好的没问题。我是阿里针对异构 IaaS 环境发布的 Kubernetes 发行版,可以在异构 IaaS 部署私有化输出的容器服务 ACK 敏捷版,就是默认通过我生产、运维 Kubernetes 集群,大家在使用容器服务 ACK 敏捷版时,通过简单平台交互,即可实现 ACK Distro 集群的部署、升级、扩容等基础运维。


我的伙伴们,即核心组件都通过了阿里云容器服务 ACK 和阿里巴巴集团核心业务场景在大规模生产环境中的验证和安全检查,它们都具有业界领先的安全性和可靠性。


身为一个完整的 Kubernetes 发行版,我可以通过开源集群镜像技术 sealer 简单快速地交付到离线环境,帮助大家更简单灵活地管理集群。这些组件支持 X86和 ARM 硬件架构,并包含一个高性能的网络插件 hybridnet,它确保我可以在不同的基础设施上顺利运行。同时,我可以在阿里云容器服务 ACK 上被注册,达到一致的资源管理、策略遵从和流量控制,使大家可以获得与在线 ACK 集群相同的用户体验。另外,针对 hybridnet 的详细说明,我将在之后的采访中为大家披露,敬请期待哦~ 


sealer 的定义及其核心原理


记者:您刚才提到可以通过 sealer 更简单灵活地管理集群,那它具体是什么以及核心原理是怎样的呢?


ACK Distro:sealer 作为阿里巴巴开源的一款帮助分布式应用快速进行打包、交付和运行的解决方案,可以通过把分布式应用及其数据库中间件等依赖项一起打包来解决复杂应用的交付问题。


sealer 构建出来的产物我们称之为集群镜像,集群镜像里内嵌了一套完整的 Kubernetes + 容器,它们双剑合璧,解决了分布式应用的交付一致性问题。


图片 1.png


它的核心原理可以参考下图:


图片 2.png


Docker 可以把单个操作系统(rootfs)和单机应用构建(docker build) 成一个容器镜像,并在单机上快速运行(docker run),而 sealer 则把 Kubernetes 看作整个集群的操作系统(cloud rootfs),并和其上部署的分布式应用构建(sealer build)成一个集群镜像,在集群上快速运行(sealer run)。与此同时,集群镜像也可以被推送(push)到公共镜像仓库(如 DockerHub、阿里云容器镜像服务等)中共享给其他用户使用。


简单描述一下,大家可以通过像 Dockerfile 一样的文件来编写一个 Kubefile:


FROM registry.cn-qingdao.aliyuncs.com/sealer-io/kubernetes:v1.19.9
RUN wget https://raw.githubusercontent.com/kubernetes/dashboard/v2.2.0/aio/deploy/recommended.yaml
CMD kubectl apply -f recommended.yaml


使用下面的 sealer build 命令就可以构建集群镜像:


sealer build -t registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest .


然后一个包含 dashboard 的集群镜像就可以被制作出来了,大家可以运行或者分享给别人。 


把制作好的集群镜像推送到镜像仓库,集群镜像仓库兼容 docker 镜像仓库标准,可以把集群镜像推送到 docker hub、阿里 ACR、或者 Harbor 中。


sealer push registry.cn-qingdao.aliyuncs.com/sealer-io/dashboard:latest


记者:也就是说,sealer 可以把 Kubernetes 及其上面部署的应用统一打包构建,且集群也可以被其他产品纳管。 


ACK Distro:是的,这就是我们追求的,希望为大家带来的一致体验。除此之外,sealer 的技术优势还有以下三点。


sealer 的技术优势


写时复制


集群镜像的存储也是通过写时复制的方式实现的。这样做有两个好处:我们可以把同一集群中不同的分布式软件打在不同层,以实现复用;还可以实现直接把集群镜像 push 到 docker 镜像仓库中。


容器镜像缓存


1)sealer build 的过程和 Docker build 还是有些区别的,sealer build 的强大之处在于不用起 Kubernetes 集群也可以执行 Kubefile 中定义的 apply 指令。


2)sealer 拥有只要私有镜像仓库中有就直接拉取,没有的话才去公网拉取镜像的能力。


图片 3.png


负载均衡


sealer 的集群高可用使用了轻量级的负载均衡 lvscare。相比其它负载均衡,lvscare 非常小仅有几百行代码,而且 lvscare 只做 ipvs 规则的守护,本身不做负载,非常稳定。直接在 node 上监听 apiserver,如果失效就移除对应的规则,重新运行之后会自动加回,相当于是一个专用的负载均衡器。


图片 4.pngimage.gif


记者:确实名不虚传。那促成这次梦幻联动的原因是什么呢?或者说您为什么选择 sealer 作为合作伙伴呢? 


ACK Distro:我最重要的使命,是帮助用户在自己的基础设施上,简单、快速地使用阿里云容器服务 ACK,并获得一致体验。在这个目标下,能够在多种多样的基础设施上进行稳定交付的能力显得尤为重要,而 sealer 提供的能力非常好地解决了这个难题。


首先,sealer 提供的标准化打包能力,省去了自定义一套打包逻辑的繁琐工作。


其次,sealer 交付我的命令简单、用时短,大家通过一条命令便可以在几分钟内完成 ACK Distro 集群的部署,效率极高。并且,我可以直接享受到 sealer 对多样基础设施的支持能力。


在运行时,sealer 提供的负载均衡、镜像缓存等技术,帮助我可以无需依赖公共云的能力,在离线环境就可以实现高可用,稳定运行。最后,基于 sealer 的 Kubefile,用户还可以将 ACK Distro 作为基础镜像,灵活定制自己的集群镜像,让我更好地赋能给广大开发者。


如何通过 sealer 使用 ACK Distro


ACK Distro:了解到 sealer 对我的重要性后,大家可以按照下面几步,通过 sealer 获取 ACK Distro。


获取 sealer 工具


wget -c http://sealer.oss-cn-beijing.aliyuncs.com/sealers/sealer-v0.5.2-linux-amd64.tar.gz
tar -xvf sealer-v0.5.2-linux-amd64.tar.gz -C /usr/bin


获取 ACK Distro 制品并拉起集群


sealer run
ack-agility-registry.cn-shanghai.cr.aliyuncs.com/ecp_builder/ackdistro:v1.20.4-ack-2 -m ${master_ip1}[,${master_ip2},${master_ip3}] [-n ${worker_ip1...}] -p password


查看集群状态


kubectl get cs


扩容节点


sealer join -m ${master_ip1}[,${master_ip2},${master_ip3}] [ -n ${worker_ip1}...]


缩容节点


sealer delete -m ${master_ip1}[,${master_ip2},${master_ip3}] [ -n ${worker_ip1}...]


清理 ACK Distro 集群


sealer delete -a


如果大家仍有疑问,欢迎前往 ACK Distro 的官方 Github 库:

https://github.com/AliyunContainerService/ackdistro


以 Istio 为例,基于 ACK Distro 构建自己的集群镜像


记者:您刚才提到,用户可以将 ACK Distro 作为基础镜像,灵活定制自己的集群镜像,那具体应该怎样操作呢? 


ACK Distro:我以 Istio 为例,为大家说明一下吧~ 


在原有的 ACK Distro 基础镜像上构建,编写 Kubefile


FROM ack-distro:1.1
RUN  curl -L https://istio.io/downloadIstio | sh -


构建镜像


sealer build -f Kubefile -m lite -t ack-distro-istio:v0.0.1 .


得到 ack-distro-istio:0.0.1


图片 5.png


部署 ack-distro-istio:0.0.1


sealer run ack-distro-istio:v0.0.1 -m ${master_ip1}[,${master_ip2},${master_ip3}] [ -n ${worker_ip1}...] -p password


查看 Istio


图片 6.png


通过以上 5 步,大家就可以基于 ACK Distro 构建出一个带 Istio 的 plus 版本的集群镜像,并且可以在多样的基础设施完成部署,这个新的集群镜像可以享用我的所有功能,包括交付能力。


Istio 只是一个样例,相信大家可以看出,通过 Kubefile,您有充分的自由度来自定义您自己的镜像,只要您的组件可以部署在 Kubernetes 之上,那么就能够用此种方式去打包。 


记者:明白了,您还有什么想对大家补充的吗? 


ACK Distro:借助 sealer,我实现了阿里云容器服务 ACK 的快速稳定交付,在此基础上也可以实现绝大多数容器化的分布式软件的快速交付。同时 ACK Distro 的项目组成员也是 sealer 项目的重要参与者,两者相辅相成,致力于为广大的开发者们带来更好用的容器服务体验。 


记者:感谢您的细心讲解,我们第一弹深度访谈到这里就要跟大家说再见了,期待您下次的精彩专访。 


ACK Distro:我们下次再见!


相关链接


ACK Distro官网:

https://www.aliyun.com/product/aliware/ackdistro


ACK Distro 官方 GitHub:

https://github.com/AliyunContainerService/ackdistro


让创新触手可及,阿里云容器服务 ACK 发行版开放免费下载:

https://mp.weixin.qq.com/s/Lc2afj91sykHMDLUKA_0bw


骚操作,这款工具可以把 Kubernetes 集群打包成一个镜像:

https://mp.weixin.qq.com/s/ssZSMqogjP6CTOKOOR2e5Q


点击此处,前往 ACK Distro 官网查看更多相关信息!

相关实践学习
通过workbench远程登录ECS,快速搭建Docker环境
本教程指导用户体验通过workbench远程登录ECS,完成搭建Docker环境的快速搭建,并使用Docker部署一个Nginx服务。
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
4天前
|
弹性计算 数据可视化 安全
高效部署企业门户网站【阿里云云效平台详细指南】
使用阿里云云效部署企业网站涉及备案域名、ECS、VPC、云效代码仓库和流水线。一键部署通过ROS快速配置,手动部署则需详细配置流水线,包括代码源、构建、部署到ECS。整个流程约10分钟,但需注意网络问题可能导致的异常。一键部署适合快速启动,手动部署适合定制化。文档详细,但可增加常见问题解答和自动化脚本支持。
119 2
高效部署企业门户网站【阿里云云效平台详细指南】
|
16天前
|
弹性计算 运维 持续交付
构建与部署企业门户网站:阿里云云效解决方案评测
在数字化时代,企业门户网站作为企业形象的线上窗口,其建设和运维效率直接影响着企业的在线品牌形象与用户体验。阿里云提供的“构建企业门户网站”解决方案,借助云效平台实现从代码到云端的无缝部署,为开发者和企业带来了前所未有的便捷性与效率。
350 5
构建与部署企业门户网站:阿里云云效解决方案评测
|
3天前
|
监控 JavaScript Serverless
函数计算产品使用问题之如何手动上传Nuxt3打包的代码到阿里云函数计算(FC)进行部署
函数计算产品作为一种事件驱动的全托管计算服务,让用户能够专注于业务逻辑的编写,而无需关心底层服务器的管理与运维。你可以有效地利用函数计算产品来支撑各类应用场景,从简单的数据处理到复杂的业务逻辑,实现快速、高效、低成本的云上部署与运维。以下是一些关于使用函数计算产品的合集和要点,帮助你更好地理解和应用这一服务。
|
13天前
|
分布式计算 DataWorks 调度
阿里云DataWorks-部署自定义python项目问题
阿里云DataWorks-多种方式部署自定义python项目并进行调度
|
18天前
|
机器学习/深度学习 Kubernetes 算法框架/工具
容器服务 ACK 大模型推理最佳实践系列一:TensorRT-LLM
在 ACK 中使用 KServe 部署 Triton+TensorRT-LLM
|
2天前
|
前端开发 Java Serverless
阿里云云效产品使用问题之前端流水线部署时,在构建环节,编译和打包要分开还是放在一起
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2天前
|
前端开发 Devops 测试技术
阿里云云效产品使用问题之更换所部署的环境关联的ACK集群该如何实现
云效作为一款全面覆盖研发全生命周期管理的云端效能平台,致力于帮助企业实现高效协同、敏捷研发和持续交付。本合集收集整理了用户在使用云效过程中遇到的常见问题,问题涉及项目创建与管理、需求规划与迭代、代码托管与版本控制、自动化测试、持续集成与发布等方面。
|
2天前
|
缓存 运维 Kubernetes
阿里云云效操作报错合集之有几个老项目流水线,部署过程一直是部署中不结束,该怎么办
本合集将整理呈现用户在使用过程中遇到的报错及其对应的解决办法,包括但不限于账户权限设置错误、项目配置不正确、代码提交冲突、构建任务执行失败、测试环境异常、需求流转阻塞等问题。阿里云云效是一站式企业级研发协同和DevOps平台,为企业提供从需求规划、开发、测试、发布到运维、运营的全流程端到端服务和工具支撑,致力于提升企业的研发效能和创新能力。
|
4天前
|
JavaScript Java 应用服务中间件
打包前后端程序并在阿里云服务器上部署,只需几步就能实现!
打包前后端程序并在阿里云服务器上部署,只需几步就能实现!
|
28天前
|
异构计算 弹性计算 并行计算

热门文章

最新文章

相关产品

  • 容器计算服务
  • 容器服务Kubernetes版