开发者学堂课程【玩转容器服务进阶课程:在 ACK 中如何使用容器优化的操作系统】学习笔记,与课程紧密联系,让用户快速学习知识。
课程地址:https://developer.aliyun.com/learning/course/1079/detail/15866
在 ACK 中如何使用容器优化的操作系统
二、优化场景介绍
下面展开讲解操作系统各种当前在容器场景,因为本节课重要的是讲解与容器的结合,会重点讲解这部分内容
1.生命周期
先讲解的是在阿里云操作系统提供的生命周期的情况,二的生命周期是到2024年,三的生命周期是到2031年,生命周期对于很多用户和应用场景都是够用的,二已经在后期了如果有新上的用户或者考虑做操作系统演进的用户,建议大家选择更长生命周期三的版本,这个版本当前是在主力的开发阶段,将整个十年周期大概分成两块,是五年的开发周期和五年的维护周期,发周期重点做几件事情,第一件事新功能的开发因为还在非常活跃的用户新功能诉求社区的演进云产品的演进都在完成,第二块是新硬件的支持包括新解决方案的发布等等都会集中在这个周期内,而后续五年的维护周期重点是做安全的修复一些关键特性的开发,根据这十年开发周期的前五年的开发和后五年的维护一般在整个软件都是前面开发,后面维护,这是十年生命周期支持的情况,第二个是关于服务的,在使用阿里巴巴 cloud Linux 时可以免费的获取,使用,修改这个操作系统,也可以自己做一些定制,同时在使用的过程中在这十年的生命周期中,可以得到软件更新功能的支持问题修复等等这些情况,同时在ACK使用阿里巴巴 cloud Linux 所有 ACK 的用户也可以从 ACK 的服务的支持渠道递到这里,在阿里云上会提供免费的服务支持包括像一些7324小时的比较严重的问题都会有专人在整个阿里云服务支持体系下面为用户提供服务支持,这就是服务支持
2.启动优化
之前讲的是生命周期,后面会讲一些特性或者对容器场景用户感知比较明显的地方,容器大家非常直观感觉到的是弹性的场景,对于弹性来讲启动的能力是比较重要的,所以针对容器的操作系统做了很多的启动优化
大概列了启动优化的流程,因为是在 ECS 场景下 Continue 虚拟机进来到操作系统中启动到 boot loader 到内核到系统的service到APP,整个流程到后面可能涉及到应用 sshd 等等的流程,在每个流程当中都做了非常多的优化,甚至在一些流程里面和 ECS 底层的神龙是有联动优化的,为了让整个的启动能够保持在最佳的时间,上面是实测,从左面用的是 centos,相比于 centos 启动时间至少有60%以上的下降,当前最快的速度是在十秒钟左右已经将虚拟机操作系统拉起来,拉起来以后在容器操作系统回对叠一些容器应用启动像 K8 s,有一些应用的配置等等都会对应的启动,这是启动场景的优化,下面讲解运行时有化
3.运行时优化
第一个是弹性能力,第二个介绍运行时,操作系统的软件库环境架构前面也有简单的图进行了说明,只是针对整个操作系统全软件上面阿里云的 Linux 都会做了很多的优化,从底层内核讲在协议栈,调度器,内存访问,存储的访问,系统调用等等这些方面都有很多的优化,这些优化的效果主要是因为各种各样的数据非常多,罗列让用户可以自己掌控的环境做实测,稍后会打开链接,在官网链接中也有部分数据可以参考,编译器上的像 gcc,glibc,JDK,LLVM 都有不同种类的优化放在里面,基础库中有 openssl,openssh,Python,zlib 这些库都是有优化的,最后是应用程序可能很多,对于这一部分比较关心,NGINX 是在ACK场景下向 Ingress Nginx 节点很多的用户适用非常非常多,在这个场景下面也有很多的优化,用户可以看到,MySQL 用户是自建数据库的 Redis,httpd 这样的应用软件都是可以存在使用阿里云 Linux 的时候开箱即用,享受到所优化的这些效果。
稳定性对于很多的使用操作系统涉及到操作系统替换或选择的用户一定会关心,切换到操作系统的时候稳定性怎么样
这张图中大概罗列了以下是怎么打通操作系统稳定性的,最下面部分是社区生态,在做操作系统创建时调查了很多市场,很多用户都是 centos 或者 react 用户,所以有很多软件的选型参考 RHEL 做一些选择,所以在RHEL相当于在巨人的肩膀上做了一些依赖,在上面的一点是阿里云集团的打磨,阿里集团整个体量和双十一以及阿里云的云产品是非常丰富整个体量和规模都非常大,这么多的产品在使用和运用阿里巴巴 cloud Linux 时肯定是各种各样的场景都会锤炼,所以在这种大量的实际业务锤炼当中将整个产品的稳定性打磨的非常好,同时最后一个点是云上各种各样客户能够反馈给各种各样的问题也能够在阿里云整个服务体系下能够将这部分解法或者方案能够尽快的落地到产品重新回馈到社区或者操作系统的镜像中让用户能够得到更好的稳定性
这个图是云上有一个大盘在统计对 centos 宕机率下降到50%以下,50%以上很多用户直接因为稳定性的问题在 centos 上很难得到解决从切到阿里云 Linux 之后得到比较好效果的体现,这是与稳定性相关的。
4.资源隔离优化
因为容器场景用到非常多的是各种用cgroup或者docker管理整个cgroup的Name space,因为是各种docker容器场景下面Name space的管理,必不可少的会涉及到每个容器资源隔离性怎么样,如果隔离性不好,限制内存是这么大但是为什么又多了,会关系到每个用户自己的容器的容量规划,本来容器只能够承载1G的流量,现在因为内存突然发现burst增发,导致多使用了几 G 内存,影响到了旁边的容器,也会影响到其他业务的稳定性,所以在容器场景下提供了非常多的隔离的能力,这就是为什么讲解资源隔离的原因,隔离部分可以看上图橙色部分,第一个是监控增强,因为容器场景下用户虽然使用上方便了,但是实际对于管理讲是变得更加复杂了,因为容器在资源上面本来一个 ECS 可能只负载一个应用和两个应用很简单,但是现在一个 ECS 划分成了多个 docker,每个 docker 部署一个应用,但是这样负载更加复杂了,所以需要有更好的监控能够让用户可以一眼看到每个容器的情况是怎么样的,CPU 使用情况,内存情况会不会有突发流量到来会引起业务的异常,所以第一个做了唯一的 cgroup 提供了不管是网络还是内存等等这方面的增强,第二个是 memcg QoS 是针对内存场景下一些 QS 保障能够尽量使内存在使用的过程中不会因为其他的一些内存不足导致的一些抖动,还有一些 per-memcg kswapd 用来保障当内存不足触发内存回收时,怎样不会因为回收影响其他的容器也有 group writeback 是写任务关系,右面是一些优先级控制,权重,内存的优先级 memcg priority 保障内存的各种优先级,but noise clean 是用来管理 CPU 调度 CPU quota 大家都会使用到在做ACK配置时,要配置 CPU share 和 CPUquota 以及 memory limit,白色部分重点是社区标准方案,橙色部分可能是阿里云对整个容器资源隔离的增强,因为这样能力的增强会让用户在 ACK 场景下使用容器的时候整体的隔离能力体验会更好,因为这些启动运行稳定性资源隔离等等这样的优化才能够带来开箱即用
5.开箱即用
容器服务 ACK Pro,ask,acr ee 容器增强服务各种各样的场景才能在操作系统上面保证非常好,提供了资源隔离能力可以让 ACK 对各种各样 CPU 的调度,资源的控制达到更好的准确性,提供了 ebpf 优化能力,让ACK能够有 terway ipvian 网络优化方案更好的为用户提供网络能力,提供了开箱即用的安全配置,让 ACK 的用户能够开箱子用的享受到等保架构的配置用户不用一个个进行配置自己等保规则也可以享受到整个等保架构的安全要求,因为各种各样的网络资源 CPU 的优化让用户能够在全场景下优化达到各种各样的性能,这部分能力更需要 ACK 做很多的改造或者 ACK 的管控测有相应的配置才能实现这些事情,所以这里涉及到与 ACK 的联动,底层提供一些基础的机制和功能 ACK 提供容器场景下各种调度的能力,资源划分的能力,用户入场能力等等可以享受到一些容器最新的创新,操作系统的创新,功能的支持也是同样的,在 cgroup v1 的时代,当前主流的场景可能都在使用的是操作系统的 cgroup V1,但是实际上 cgroup v2 已经引进很多了,v2 上面有一些高级的能力已经 back 到 v1上了,可以让 v1 的用户使用场景能够更好的cgroup v2的能力,现在 v2的使用场景是主流,所以现在会将V1中开发的很多的资源慢慢迁移到 V2上,让 V2的用户也能够享受到v1里面提供的能力,这个需要操作系统和ACK一起配合完成这样的功能的支持高效的运维,因为将整个工具监控运维的增强都集成到了操作系统中,ACK也能够感觉到这部分的能力,所以在ACK托管或者运维的场景下,特别像 serverless 的场景可以直接在 ACK 享受非常好的稳定性运维能力,有一些 worker 节点没有做到推广也提供了 ACK 中控制台中有很多运维能力,包括一键诊断,宕机检测也可以在 ACK 的控制台里面看到,最后一个是整个的联动,是用来做操作系统和ACK的质量保证,操作系统每次发布的时候会经过ACK 共同的 cicd 流程,后来共同保证这块质量的发布,能够在整个发布过程中可以及时的发现整个业务,操作系统的变动或者 ACK 变动带来的联动的问题,这时可以保证操作系统在云上在ACK发布的时候保证最好的健壮性,这一页是对前面能力增强的总结,生命周期的情况在这里看不到会在整个容器场景中会有联合生命周期和服务的规划,这里对用户可能已经屏蔽掉了,用户只需要在创建 ACK 的时候使用的 ECS 和操作系统搭配是阿里巴巴 cloud Linux ,就可以开箱即用的享受到这里所有的阿里云 Linux 和 ACK 所共同建设的能力。






