使用 LifseaOS 体验 ACK 千节点分钟级扩容

简介: 使用 LifseaOS 体验 ACK 千节点分钟级扩容

作者:阿里云 ACK 和操作系统团队


三年前的云栖大会上,LifseaOS 正式发布,这是一款专为云原生场景而垂直优化的操作系统发行版,即业界统称的 ContainerOS。初始发布时,它提供了如下几个突出的特性:轻量(Lightweight)、快速(Fast)、安全(Secure)、镜像原子管理(Atomic)


如今 LifseaOS 已在阿里云容器服务 ACK Pro 的托管节点池获得广泛使用,经过一年多的打磨优化,它在基于 Kubernetes 的云原生集群中正展现出越来越多的独特优势,本次所介绍的即为 LifseaOS 在扩容弹性上所展现出的极速优势。


两秒启动 OS,分钟级千节点扩容

在 ACK 集群中实现弹性扩容,是一项基础、关键且被重度依赖的能力。尤其是在集群资源池紧张或者不足时,如何快速扩容节点、恢复资源水位对用户业务至关重要。


在节点自动伸缩场景,ACK 通过组件轮询判断集群内资源是否充足,一旦出现不足则自动触发扩容节点。如果在这种情况下,节点扩容速度慢,则会严重影响自动伸缩效果,甚至因为资源水位长期不足而影响用户业务。目前的节点扩容速度在 ACK 节点自动伸缩端到端耗时中占比超过 90%,可以说节点扩容速度的优化的程度决定了自动伸缩的体验。


以某量化公司的扩容场景为例,在其长期提供服务的过程中,经过了上千次百节点级别的扩容活动,平均每次扩容 P90 节点就绪耗时(即单次扩容活动开始至 90% 的节点处于就绪状态)为 162s,耗时较长。若能将扩容活动耗时压缩至 1min 以内,将大幅提高用户在节点扩容场景中的体验。


基于此,LifseaOS 针对 ACK 集群节点池的弹性扩容场景,实现了极速扩容的特性。


一方面,LifseaOS 通过简化 OS 本身的启动流程大大提高了 OS 启动速度。它裁剪掉了大量云上场景无需的硬件驱动,必要的内核驱动模块修改为 built-in 模式,去除了 initramfs,udev 规则也被大大简化,OS 首次启动时间从传统 OS 的 1min 以上下降到了 2s 左右。


另一方面,LifseaOS 结合 ACK 场景进行了定制优化。它通过预置集群管控必备组件的容器镜像以减少节点启动过程中因镜像拉取而带来的耗时,并结合 ACK 管控链路优化(例如调节关键逻辑的检测频率、调整高负载下系统瓶颈中的限流值等),极大地提高了节点扩容速度。


LifseaOS 在节点弹性扩容场景上,相比于传统 OS 方案有非常大的优势,且并发启动的节点数目越多,LifseaOS 的优势越明显!如下图所示,并发启动 1000 个节点时,P90 节点就绪时间 CentOS 为 380s,而 LifseaOS 仅需 53s,实现了分钟级别的千节点扩容体验!!!

image.png


降低 OS 运维负担,专为容器场景深度优化

在 ACK 节点池中使用 ContainerOS(基于 LifseaOS),相比传统的 Linux OS 而言,ContainerOS 为容器场景深度优化,具备更加安全、轻量、启动快速、不可变镜像等优点。


  • 轻量(Lightweight)

LifseaOS 默认集成 Containerd、Kubernetes 组件,仅仅保留 Kubernetes Pods 运行所需的系统服务与软件包,相比传统操作系统(Alibaba Cloud Linux 2/3、CentOS)软件包数量减少 60%,镜像大小减少 70%。

  • 快速(Fast)

LifseaOS 裁剪掉了大量云上场景无需的硬件驱动,必要的内核驱动模块修改为 built-in 模式,去除了 initramfs,udev 规则也被大大简化,大大提升了启动时间,OS 首次启动从传统 OS 的 1min 以上下降到了 2s 左右。

  • 安全(Secure)

LifseaOS 根文件系统为只读权限,只有 /etc 和 /var 目录可以满足基础的系统配置需求。去除了 sshd 服务与 python 支持,减少 sshd CVE 漏洞带来的威胁。同时将 OS 的常规运维 API 化,减少用户直接登录系统进行一些可能无法追溯的黑屏操作而带来的稳定性、安全性风险。不过,LifseaOS 仍然提供一个专用的运维容器用以登录系统,满足紧急的运维需求,运维容器需要通过 API 按需拉起,默认不开启。

  • 镜像原子管理(Atomic)

LifseaOS 不支持单个 rpm 包的安装、升级和卸载,通过 ostree 技术,将 OS 镜像版本化管理,更新操作系统上的软件包、或者固化的配置时,需要以整个镜像为粒度进行更新(或回滚),尽可能保证集群中各个节点的软件包版本与系统配置的一致性。

image.png

ContainerOS 结合 ACK 托管节点池的自动化管理能力,包括节点快速 CVE 修复、节点自愈、镜像自动升级等,能够进一步降低用户在 OS 运维方面的管理负担,让用户更加关注上层应用。


开始体验 LifseaOS 吧

LifseaOS 是 Linux Base 操作系统,专门为容器场景而特别优化,与 ACK 的深度集成,用户可以开箱即用实现集群内快速的弹性扩容。


目前 LifseaOS 已在 ACK Pro 1.24.6 及以上版本集群的托管节点池中开放(产品形态即为下图中的 ContainerOS)。

image.png

您可以前往 ACK 产品控制台创建基于 LifseaOS 的托管节点池,参考下图。现在开始玩转 LifseaOS 吧。

image.png

OpenAnolis 龙蜥社区已经成立了 ContainerOS 的特别兴趣小组,LifseaOS 相关代码也将贡献到龙蜥社区,敬请大家期待,更多信息请前往下方链接查看:https://openanolis.cn/sig/container-os


点击此处,即可查看阿里云容器服务 ACK 产品详情

相关实践学习
深入解析Docker容器化技术
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化,容器是完全使用沙箱机制,相互之间不会有任何接口。Docker是世界领先的软件容器平台。开发人员利用Docker可以消除协作编码时“在我的机器上可正常工作”的问题。运维人员利用Docker可以在隔离容器中并行运行和管理应用,获得更好的计算密度。企业利用Docker可以构建敏捷的软件交付管道,以更快的速度、更高的安全性和可靠的信誉为Linux和Windows Server应用发布新功能。 在本套课程中,我们将全面的讲解Docker技术栈,从环境安装到容器、镜像操作以及生产环境如何部署开发的微服务应用。本课程由黑马程序员提供。     相关的阿里云产品:容器服务 ACK 容器服务 Kubernetes 版(简称 ACK)提供高性能可伸缩的容器应用管理能力,支持企业级容器化应用的全生命周期管理。整合阿里云虚拟化、存储、网络和安全能力,打造云端最佳容器化应用运行环境。 了解产品详情: https://www.aliyun.com/product/kubernetes
相关文章
|
Kubernetes API 调度
k8s中节点无法启动Pod
【10月更文挑战第3天】
730 6
|
存储 Kubernetes Docker
Kubernetes节点资源耗尽状态的处理
Kubernetes节点资源耗尽状态的处理
|
Kubernetes API 网络安全
当node节点kubectl 命令无法连接到 Kubernetes API 服务器
当Node节点上的 `kubectl`无法连接到Kubernetes API服务器时,可以通过以上步骤逐步排查和解决问题。首先确保网络连接正常,验证 `kubeconfig`文件配置正确,检查API服务器和Node节点的状态,最后排除防火墙或网络策略的干扰,并通过重启服务恢复正常连接。通过这些措施,可以有效解决与Kubernetes API服务器通信的常见问题,从而保障集群的正常运行。
1208 17
|
Kubernetes Shell Windows
【Azure K8S | AKS】在AKS的节点中抓取目标POD的网络包方法分享
在AKS中遇到复杂网络问题时,可通过以下步骤进入特定POD抓取网络包进行分析:1. 使用`kubectl get pods`确认Pod所在Node;2. 通过`kubectl node-shell`登录Node;3. 使用`crictl ps`找到Pod的Container ID;4. 获取PID并使用`nsenter`进入Pod的网络空间;5. 在`/var/tmp`目录下使用`tcpdump`抓包。完成后按Ctrl+C停止抓包。
550 12
|
Kubernetes 容器 Perl
在K8S中,Deployment⽀持扩容吗?它与HPA有什么区别?
在K8S中,Deployment⽀持扩容吗?它与HPA有什么区别?
|
存储 Kubernetes 调度
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
在K8S中,⼀个pod的不同container能够分开被调动到不同的节点上吗?
|
Kubernetes 调度 Perl
在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
在K8S中,Pod多副本配置了硬亲和性,会调度到同⼀个节点上吗?
|
存储 Kubernetes API
在K8S中,如何扩容和缩容K8s集群?
在K8S中,如何扩容和缩容K8s集群?
|
Kubernetes 应用服务中间件 Linux
多Master节点的k8s集群部署
多Master节点的k8s集群部署
|
Kubernetes Unix Linux
k8s将节点容器运行时从Docker迁移到Containerd
k8s将节点容器运行时从Docker迁移到Containerd

相关产品

  • 容器服务Kubernetes版
  • 推荐镜像

    更多