《谢仲天-TencentOS Server云原生技术实践v2-p.pdf》由会员分享,可在线阅读,更多相关《谢仲天-TencentOS Server云原生技术实践v2-p.pdf(36页珍藏版)》请在三个皮匠报告上搜索。
1、TencentOS Server云原生技术实践2022.7.15腾讯云OS团队1.腾讯OS技术积累2.TencentOS云原生网络实践3.TencentOS RUE(如意)4.TencentOS 悟净5.其他云原生特性6.下一代云原生操作系统(全栈国产化)目录腾讯OS技术积累0112年磨一剑2010年开始自主研发代替外购SUSE2011年发布第一个版本TS1精简内核稳定性/性能提升新硬件支持新技术引进功能定制持续运营打磨2019年发布TS3输出到公有云客户:80%覆盖率对外开源2021年规模1000万2016年发布TS2自研覆盖99%支撑微信、QQ、游戏等核心业务2020年OpenCloudO
2、S社区成立打造生态、引领核心技术实现开源和商业的闭环自主研发时代自主研发运营、持续打磨创新研发时代向外生长、社区生态、技术引领TencentOS Server简介:十年积累,千万节点2010年开始研发,10+年积累1000万规模超千万,行业领先99.999%可用性5个9,满足企业级要求TencentOS Server自2010年研发,历经10+年技术积累,自研内核核心技术,系统全面优化,支持国产主流硬件平台;商用节点数达1000万级,支撑12大行业客户核心系统,经历海量场景考验私有化场景拓展TS3,5.4内核打磨成熟2022年Tencent Server云原生能力总览云原生内核(基于5.4)云
3、原生服务能力行业领先Ebpf/Cilium全面支持性能、灵活性、安全性Cillium是新一代的K8s网络插件,依赖内核ebpf。内核关键特性ebpf全量支持,全面支持cilium新特性容器可视化能力增强(云原生SLI)可维护性CPU弹性调度降本增效容器级别的专业监控指标;黑匣子常态化运行,捕捉随机异常抖动业界难题;异常主动上报,提供毫秒级响应内存分级卸载(悟净)降本增效统一资源隔离(RUE)稳定性/性能/降本增效CPU隔离、内存隔离、IO隔离、网络隔离解决不同优先级容器之前的隔离性问题,保障高优先级容器的服务质量高可用云原生网络可靠性容器资源视图隔离可用性容器化全局资源,解决富容器场景下的业务
4、可用性问题MPTCP(mutipath tcp)链路故障failover-多路径TCP&交换机ECMP算法解决突发流量导致资源浪费问题,降低容器的CPU资源申请,降低成本通过对业务压力自适应画像,对内存做动态的冷热分级回收利用,在保证业务服务质量的情况下,降低整机的内存消耗qGPU(GPU隔离和共享)降本增效(GPU)通过OS层的黑科技,分时复用GPU资源(GPU和显存),提升GPU资源利用率容器网络跟踪系统可维护性复杂云原生网络架构下,网络包的全生命周期跟踪、诊断工具云原生网络实践02Cillium支持/Ebpf支持网络包全链路跟踪和诊断工具集安全容器网络和优化高稳网络6Cilium 重要f
5、eature支持,重要落地项目tc-bpf 功能集支持EBPF方案典型产品,客户案例cilium v0.11及之前cilium v1.8-XDP Load Balancing-socket based load balance-sesson affinity某游戏客户(XDP 用户态协议栈)cilium v1.5-Service Mesh socket map/redirect 功能集支持腾讯云TCM(服务网格)-socket level EBPF 功能集支持-XDP 功能集支持-namespace cookies功能支持某教育客户(EKS 基于ipvlan/tc-bpf端口复用)cilium
6、 v1.9-iptables by pass-neigh redirection 功能集支持腾讯云TKE(cilium整体解决方案,服务于多个重点客户)某游戏客户(XDP 网关)7Cillium支持:代码分析一、ebpf移植整体情况:移植的补丁数量约350个,移植的特性(功能)数量约20个二、与5.10特性对比条目TencentOS serverupstream kernel 5.10cilium相关缺失bpf 类型30300bpf map类型28280bpf helpers 函数1491550https:/docs.cilium.io/en/stable/operations/system_
7、requirements/三、cillium支持特性名称描述CO-RE机制该特性可以使得eBPF程序经过一次编译后,可以运行在所有支持CO-RE模式的内核中,无需重复编译eBPF字节码。TRACING类型TRACING类型的eBPF用于内核函数、ftrace的跟踪,与KPROBE和TRACEPOINT类型的eBPF类似,但功能更为强大、效率更高。同时,其支持直接内存访问,可以在函数退出时获取到函数的入参、能够修改某类被trace函数的返回值等。bpf-trampoline机制用于支持TRACING类型的eBPF程序attach到其他的eBPF程序上STRUCT_OPS类型新增STRUCT_OP
8、S类型的eBPF程序,可以实现替换内核中的一些函数。该特性基于该类型的eBPF实现了tcp拥塞算法的eBPF支持,可以使用eBPF程序来实现tcp拥塞算法。EXT类型动态eBPF程序扩展,可以用现有的eBPF动态替换原有的eBPF程序中的某个函数。optimize-bpf_tail_call机制使得单个eBPF程序可以bpf_tail_call多个eBPF程序(之前只能单次调用)bpf-dispatcher优化某些eBPF程序(如XDP程序)的执行速度,用于将间接调用(如bpf_prog_run_xdp)转换为直接调用sock_map TCP listen and UDP support增加套
9、接口类型的MAP对TCP处于listen状态的套接口和UDP套接口提供支持bpf_modify_ret为TRACING类型的eBPF新增BPF_MODIFY_RETURN的attach类型,可以通过eBPF程序终止原来的被插桩的函数的执行,并修改其返回值。该特性在LSM中得到了使用。bpf-lsm类型LSM模块提供的对eBPF的支持bpf-link机制bpf_link抽象的实现。该特性将attach进行了抽象,在eBPF和被attach的实例之间抽象了一层link,使得attach动作变得统一,且TRACING类型的eBPF也可以被pin了(之前基于kporbe的eBPF在用户态程序退出后,会
10、被直接detach,然后释放)bpf-netns类型支持将eBPF程序attach到网络命名空间上bpf_sk_assign函数新增helper函数bpf_sk_assign,用于在收包的时候直接指定报文的收包套接口SK_LOOKUP类型实现SK_LOOKUP类型eBPF,该程序会在套接口查找的时候被调用,从而直接影响报文被投递到的套接口bpf-iterator机制迭代器类型的eBPF程序类型支持。该特性提供的是一个机制,可以将eBPF程序作为一个文件(如pin文件)暴露给用户,用户在读取文件的时候触发eBPF程序遍历某种数据。根据实现的不同,能做到的功能也不同。比如已经实现了的套接口迭代器、
11、进程迭代器、map迭代器等。bpf:Support access to bpf map fields机制可以在eBPF程序里访问map的元素属性,包括map长度等resolve_btfids机制该特性提供了编译时BTF ID解析的功能。在以往,内核中想要获取到某个结构体对应的BTF的ID,需要主动调用函数接口从BTF数据中进行符号查找,效率比较低。该特性在内核编译期间就能找到对应的BTF ID,并将其填充到对应的全局变量中(变量处于特定的数据段中)bpf_local_storage(MAP)从bpf_sk_storage类型的MAP进行抽象,创建了通用的local_storage机制,可用于将
12、数据存储到特定的实例上。同时,实现了BPF_MAP_TYPE_INODE_STORAGE类型的MAP,可以将数据存储到特定的inode上,即所谓的本地存储。bpf-ring-buffer(MAP)ring buffer类型的eBPF map的实现,用于取代之前的PERF_EVENT类型的MAP。可用于用户态和eBPF程序之间的数据传输,且支持更复杂的操作。bpf_for_each_map_elem函数通过传递给helper函数bpf_for_each_map_elem一个回调函数,可以遍历map 中的数据,每个数据都会传递给回调函数。bpf_timereBPF程序中使用timer定时器官方列举
13、的features和内核选项,在Tk4(5.4)中都支持nettrace 网络包全生命周期跟踪、网络诊断和监控工具集nettrace:基于eBPF实现的用于云原生场景的网络定位、诊断和监控工具:报文生命周期跟踪,快速定位问题主动故障诊断,一键解决网络故障常态化网络异常监控,实时发现网络问题集群报文染色,解决容器集群范围网络包跟踪难题新增丢包原因Feature,在Kernel社区提交近100个patch,上了lwn新闻云原生场景下,网络环境部署越来越复杂,报文在节点上的处理路径也越来越长。当发生网络故障时,传统的网络定位工具(tcpdump、dropwatch等)存在一定的短板,无法深入内核进行
14、分析,使得问题定位困难、周期长。Better visibility into packet-dropping decisionshttps:/ p tcp监控结果:监控系统中所有的TCP丢包事件及其原因。Nettrace-监控模式(常态化部署/系统级监控)Nettrace-诊断模式(场景化专业分析)适用场景:出现网络故障时,启动命令跟踪特定流(报文),进行诊断分析现象:节点ping不通诊断命令:nettrace p icmp-saddr 192.168.122.8 intel诊断结果:iptables在filter表INPUT链中的防火墙规则导致普通用户、专家都适用EKS(安全容器)网络方案E
15、KS:腾讯Severless安全容器方案,虚拟化轻量隔离网络方案:主/从IP模式,控制面和数据面分离节点使用从(slave)IP,POD使用主(master)IP。对外通信时,均使用主IP来进行,POD对整个过程不感知。eBPF程序:1.基于TC在对外的网口上进行报文转发,转发控制面和数据面数据,通过端口隔离2.基于套接口监控节点与POD上的连接,并在系统调用阶段进行端口冲突检查和反馈内核:新增两种eBPF类型,用于跟踪套接口状态变化基于eBPF的DNS缓存问题:节点需要独立的dns pod,开销大,性能差Pod级别dns缓存缺失,导致需要大量dns查找,性能差,上游dns服务压力大相关问题难
16、查,运维成本高基于eBPF,在节点/POD上实现DNS缓存机制:高性能:相比于用户程序缓存的方式,查找性能提高一倍低开销:节点无需额外部署dns pod或者systemd-resolved,节省资源免运维:节点级别缓存,对用户透明13高稳网络:基于多路径TCP的网络可靠性增强hostbond1eth0eth1hostbond1eth0eth1LA0LA1LA0LA1LC0LC1LC2LC3LC4LC5LC6LC7CUF0CUF1CUF2CUF3CUF0CUF1CUF2CUF3CUF0CUF1CUF2CUF3CUF0CUF1CUF2CUF3接入层交换机核心层交换机说明:某一个LC或者LA出现假死
17、;即:LACP协议探测上下行交换机正常,但是实际交换机已经不转发流量,会导致故障交换机成为“网络黑洞”,影响所有流经对应交换机的流量通信。业务诉求:基于TC在对外的网口上进行报文转发1)减少或避免业务对网络中单点交换机故障的感知度2)尽量不对现有业务代码做改动问题:单点交换机故障引起服务故障-交换机假死影响时长次数百分比20s以内8078.6%20s-60s1616.5%60s-180s22%180s以上32.9案例统计:14方案:MPTCP(mutipath tcp)链路故障failover-多路径TCP&交换机ECMP算法原理:-MPTCP保持了和传统TCP相同的语义(socket系统调用
18、扩展了prot参数:IPPROT_MPTCP)-之间链接会被kernel扩展为,多条链接-交换机用ECMP协议根据5元组选择转发出向端口,预期将不同tcp子流从不同的端口转发出去,从而被转发到不同的下行交换机mptcp socket(sip1,sport1)tcp socket0(sip1,sport1)tcp socketN(sipN,sportN)mptcp socket(dip1,dport1)tcp socket0(dip1,dport1)tcp socketN(dip1,dport1)client(sip1,sport1)server图(1):user/kernel space so
19、ck视图clientLALCLCLAServer图(2):MPTCP+ECMP链路failoverECMP增强:(除backport MPTCP外)1、client不支持单ip多port创建子流(支持多ip方式来创建子流),容器通常只有一个IP。开发支持单ip多port模式。2、ingress场景下需要用到iptables来负载均衡,Netfilter子系统支持MPTCP。3、扩展到云原生(容器)场景,打造云原生高稳网络方案TencentOS RUE(如意)03内核统一资源隔离解决方案,降本增效利器基于RUE的全场景混部:基于内核隔能力,打造全场景混部系统,提升资源利用率服务器A在线业务服务器
20、B离线业务服务器C混部在离线业务混部背景020406080100CPU使用率原生内核隔离性差,混部后毛刺增加,在线业务受严重干扰在线单独离线单独混部后关键问题IDC整体自研利用率低,CPU利用率:15%CaelusTencentOSServer如意(RUE)统一资源隔离TCSCPUCPUIOIO网络网络内存内存离线离线在线在线容器调度容器调度应用画像应用画像干扰检测干扰检测冲突处理冲突处理配置接口配置接口系统监控系统监控服务质量监控系统服务质量监控系统QoSQoS指标指标异常记录异常记录配置工具配置工具统计信息统计信息基础容器服务基础容器服务全场景混部技术(容器+物理机)容器平台调度系统整体方
21、案:底层资源隔离(RUE)+上层容器编排上限高,适用性广,不挑业务OS内核层自动的容器隔离,冲突处理相比社区,内核隔离能力全面增强在线业务:常规业务离线业务:TDW大数据(压缩和常规)、AI训练、广告转码17全场景混部系统如意(RUE):定位为全场景混部系统底座,为混部底层提供资源隔离解决方案如意CPU QoS:绝对抢占(BT调度器)23pick_next_task在线任务离线任务在线离线同时存在在线始终优于离线场景1选出任务跳过离线1CPUNNULL213123pick_next_task在线任务离线任务只存在离线离线得到运行机会场景NULL在线为空选择离线1CPU运行
22、在线运行离线21354NULLwake_up_process在线任务在线唤醒抢占离线场景 1在线入队在线任务1need_resched1CPU运行在线独立的调度类是绝对抢占、低延迟的保障实际验证干扰率1%以内云原生核心能力(如意)效果:完美底层隔离,资源利用率翻倍,成本降低50%混部关键指标基于RUE的CPU隔离CPU隔离效果对比奖项混部大盘CPU利用率:30%,成本降低50%干扰率:离线对在线的影响小,干扰率1%抖动:在线业务的io、网络带宽稳定,波动率5%覆盖规模超2000万核,供应离线600w核样板集群CPU占用率:65%,行业标杆2021年7月15日,开源TencentOS系列产品亮相
23、央视经济半小时腾讯开源TencentOS系列项目亮相央视2021年9月17日,TencentOS荣获中国信通院授予的“2021年OSCAR尖峰开源项目及开源社区”奖项。腾讯TencentOS荣获“OSCAR尖峰奖”,创新突破节省上亿度电资源基于社区内核的隔离纯在线业务典型案例:基于如意(RUE)的全场景混部系统20作业帮“在多重举措的合力推动下,作业帮容器化的收益显著,同样业务迁移前后,使用了 HPA 和在离线混合部署后,成本下降43%,稳定性提升到99.995%,接口响应提升10%。由此,有效支持了作业帮业务的快速迭代,秒级急速扩缩容,服务运行态规范落地和统一的运维环境,多云的环境统一,提升
24、服务可用性。”最佳实践|作业帮云原生成本优化实践成本降低43%稳定性提升至99.995%接口响应提升10%某头部互联网厂商资源利用率提升100%规模10万核+成本节省数百万/年基于RUE和Crane(腾讯云推出的国内首个云原生成本优化开源项目),整体基于OS内核提供的强隔离、性能主动告警、云原生SLI等高级能力,通过预测,推荐资源和智能弹性配置,提升业务整体的资源利用率,遵循 FinOps 标准,为云原生用户提供云成本优化一站式解决方案。TencentOS悟净04内存分级卸载,提升内存利用率22内存分级卸载-悟净-架构悟净基于内核内存管理系统 LRU 页面回收机制,对其核心路径做了大幅调优与改
25、造,并引入以下几大独立自研模块:UMRD(Userspace Memory Reclaim Daemon):用户态主动式异步回收进程,根据压力信息平衡回收策略。DAMON 核心子模块:主动探测内存热度,提供分级回收数据源。SWAP hinting 框架:在页换出时根据页面热度进行多级回写平衡。SWAP balancer 模块:异步平衡多级 SWAP 设备,精准冷内存沉降。CXL 支持:利用内核 Promote/Demote 框架避免 Page Fault 与 IO,提高性能。核心性能优化:针对内核内存管理核心代码、Cgroup V1 PSI、SWAP 路径、Working Set 统计等,进行
26、了大量优化,部分已经upstream23内存分级卸载-悟净-效果内存节省30+%其他云原生特性05云原生SLI/Ebpf-based云原生监控25云原生SLI-Sevice Level Indicator背景:容器隔离性差,干扰严重提升密度,资源限制引发抖动业务随机抖动,业界难题现有指标:进程级别、全局统计,难用!目标:容器级别、专业、专用常态化部署(低开销)主动监控异常、主动记录毫秒级响应SLI方案选择优点缺点内核原生实现1.在内核里实现,跟踪开销最小,性能最优2.可以调用内核所有接口,功能开发不被制约1.扩展性较差2.开发、更新慢3.开发难度相对较高eBPF1.扩展性较好,可以按需动态修改
27、2.开发、部署周期短,开发难度相对低1.Ebpf代码有较多安全检查,引入较大开销2.Ebpf对调用接口有严格的限制,功能有限方案对比:基础能力:选用内核原生方案26云原生SLI-方案特性常态化部署,低开销,专业级云原生指标主动性能异常上报,毫秒级相应MBUF问题定位(黑匣子),捕捉每一次抖动Load.dLoad.dLoad.rLoad.rLongsysLongsysrundelayrundelayIrqtimeIrqtime(中断延迟中断延迟)BlockBlock D DIOIO BlockBlockSleepSleep S S全局内存直接回收全局内存直接回收容器内存直接回收容器内存直接回收全
28、局匿名内存换出全局匿名内存换出容器匿名内存换出容器匿名内存换出全局匿名内存换入全局匿名内存换入容器匿名内存换入容器匿名内存换入全局内存压缩全局内存压缩云原生SLIMbufMbuf(黑匣子,实时捕获异常)(黑匣子,实时捕获异常)应用监控框架(如应用监控框架(如K8sK8s)实时捕获主动上报SLI指标分类说明Load.rCPU容器内处于R态的进程平均数量,判断overloadLoad.dCPU容器内处于R态的进程平均数量,判断锁竞争或IO阻塞longsysCPU内核态长延迟。系统调用、缺页、中断等原因可能导致rundelayCPU调度延迟。判断CPU争抢irqtimeCPU中断延迟。判断中断带来的
29、影响Block DCPUD状态阻塞延迟。判断锁竞争或IO阻塞IO BlockIOIO阻塞延迟。判断IO问题内存系列指标内存内存关键延迟。判断各种细致的内存问题27云原生SLI-案例方案:SLI+Mbuf,常态化部署,捕获随机抖动典型的业务随机抖动问题行业难题!现象描述:容器内日志打印5-8s内日志无输出,业务莫名卡顿随机出现,无复现规律,持续时间短(秒级)资源无瓶颈,cpu/内存/io/网络 都正常监控无异常,秒级监控也束手无策效果:抓到关键第一现场,定位问题,优化内核后解决28Ebpf-based云原生监控Kernel space容器级别User spaceVerifierBPFRuntim
30、eEvent TargetsBPF actionssocketskprobesuprobestracepoints报文跟踪连接监控时延监控RTT分布丢包监控存活时间NET总延迟合并数队列延迟IO地址IO模型IO大小IOCGrouptcptracetcpconnectbiocgsnoopoffwaketimethrottlesnoop基于 Libbpf 和 BCC,实现 per-cgroup 级别的监控工具LibbpfBCCCPU阻塞延迟阻塞原因限流监控CGroupCGroupbiocgpattern29监控工具示例 biocgsnoop:IO监控工具基于cgroup,输出每个IO的基本信息 t
31、cptrace:网络监控工具监控tcp网络连接,输出skb报文在协议栈中各个点的时间延迟等信息,跟踪报文在内核中的生命周期应用场景:链路延迟发生增大、抖动,协助排查延迟发生的位置,快速定位网络故障应用场景:IO平均时延变大。按进程IO分别排查延迟发生在硬件还是软件队列,同时反应出IO大小和磁盘位置 offwaketime:阻塞进程监控工具监控系统指定时间指定进程的off/on cpu事件及延迟,以及进程阻塞原因及其对应的唤醒者信息应用场景:识别系统长阻塞进程以及对该长阻塞进程等待的资源或者原因进行排查,协助业务或系统调优30Cgroupfs-容器资源视图隔离背景:容器的整体隔离性还非常不完整,
32、其中,/proc、/sys 文件系统中的一些资源统计信息,还没有完整的容器化(或者说Namespace化),导致在物理机/虚拟机中的一些常用命令(比如free/top)在容器中运行时,不能准确展示容器视角的信息(默认展示系统级别的全局信息,比如系统总内存和free内存),这也是云原生(容器)场景中一直存在的一类顽疾。CPU弹性调度31弹性容器业务场景CPU1 CPU2 CPU3服务器规格高:256 CPU保证容器服务质量:容器绑定CPU存在流量突发导致的部分容器CPU高负载,而同一台机器上其它容器CPU空载的情况CPU4 CPU5 CPU6容器1容器2容器1流量突发跑满所有CPU容器2空闲CP
33、U闲置CPU1 CPU2 CPU3CPU5 CPU6借用容器2空闲的CPU(离线运行)容器2空闲CPU闲置CPU4CPU1 CPU2 CPU3CPU5 CPU6容器1负载降低归还CPU容器2负载上升取回CPUCPU4012进程cpuset动态伸缩/sys/fs/cgroup/cpuset容器高负载扩展cpuset以及提升quota容器低负载收缩cpuset并且恢复quota基于RUE的多优先级混部系统:由Finops指导,结合Crane,实现多优先级混部,助力业务降本增效AI预测模型分时弹性资源QoST1,T2)T3,T4)不同颜色代表不同业务CPU/内存 request总量减少45%左右Po
34、d规格从主流8-16核减少为1-4核currentoptimization基于“如意”的多优先级混部系统,由Finops指导,关注成本Crane(Crane(容器管理平台容器管理平台-FinOpsFinOps基金会基金会)TencentOSTencentOSTKEStackTKEStack(容器服务平台容器服务平台)弹性弹性CPUCPU调度调度云原生云原生SLISLI增强增强(关键指标上报关键指标上报)多优先级混部系统多优先级混部系统(成本大师成本大师)RUERUESLI增强(关键指标上报)下一代云原生操作系统06全栈国产化、轻量、安全、可靠、免运维自主可控的下一代云原生操作系统LikeX(H
35、ypervisor)设备模拟组件(VMM)容器编排引擎(Xlet-Server)StartXLisaOS(容器OS)Xlet-NodeGuestcontainercontainer全栈国产化特征轻量化Safety(可靠性)Security(安全性)解决痛点解决版本碎片化的问题容器运行时与内核结合问题多租户安全隔离问题优势支撑业务敏捷发布支撑业务长时间稳定运行支撑业务快速弹性伸缩下一代云原生操作系统以容器为中心,虚拟化技术主要用于容器隔离,能更好地支持Serverless/FaaS场景。通过参与贡献国际顶级开源项目获得原创技术能力,从而实现全栈国产化、自主可控的下一代云原生操作系统。LisaOS(容器OS)Xlet-NodeGuestcontainercontainer感谢聆听产品官网介绍:https:/ Server下载地址:http:/