乐趣区

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

作者:淮右、王飞、瑜佳

记者: 阿里云原生的读者敌人们大家好,明天应宽广感兴趣敌人们的强烈要求,咱们邀请来了「阿里云容器服务 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 + 容器,它们双剑合璧,解决了分布式应用的交付一致性问题。

它的外围原理能够参考下图:

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 领有只有公有镜像仓库中有就间接拉取,没有的话才去公网拉取镜像的能力。

负载平衡

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

记者:的确名不副实。那促成这次梦幻联动的起因是什么呢?或者说您为什么抉择 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

部署 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

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

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

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

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

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

ACK Distro: 咱们下次再见!

相干链接

ACK Distro 官网:

[](https://www.aliyun.com/produc…)

https://www.aliyun.com/produc…

ACK Distro 官网 GitHub:

[](https://github.com/AliyunCont…)

https://github.com/AliyunCont…

让翻新触手可及,阿里云容器服务 ACK 发行版凋谢收费下载:

[](https://mp.weixin.qq.com/s/Lc…)

https://mp.weixin.qq.com/s/Lc…

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

[](https://mp.weixin.qq.com/s/ss…)

https://mp.weixin.qq.com/s/ss…

点击​​此处​​,返回 ACK Distro 官网查看更多相干信息!

退出移动版