KubeCon China 2021 回顾(下)

本文精选了一系列Kubernetes及云原生领域的技术分享,涵盖了CI/CD系统、文件系统性能提升、混沌工程实践、容器运行时调度等多个方面,并深入探讨了如Tekton、FUSE、ChaosMesh等工具的使用技巧。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

这也是一篇长文。

Build a Large Scale Cloud Native CI/CD System Based on Tekton

4ad5e04bb9d555a7319a8dfc298c228d.png

原子能力非常优秀了。

a2ad0b0a218776266ef23c465bf9c0f2.png

基于 Tekton 做扩展。

b0d7996cac3539a00bb846001e10cf51.pngd755ad70618946f8ad38f886b390b1a0.png

cp-controller 支持了 sharding。

b07e5c23926ff1ee3138259f06178d4a.png

解决 Etcd 性能问题的方案就是不用 Etcd,改用 database。

Improve FUSE Filesystem Performance and Reliability

这个 Session 也很硬核。

f7aed4a8851effacd007b1a6b1feca53.png4a590c5ec4b66fd8f5d75e452cf4bbb4.png

FUSE device driver 会有额外的数据拷贝和上下文切换,是造成性能损耗的关键因素。

8b810c69f86d0ac0c8739450356af70a.pngd1995a3559180dd6dfa2eb203649411d.pngc4da465894f7051e0ef309f2dde2c4cd.png95c251f225dd9575d48fa7e8b4318e84.png9e2bba3f30eb8746583598bb2dd630e9.png

FUSE FD Passthrough 这块参考 PPT 中的链接一起看会好一点:https://lwn.net/Articles/843093/

78b509206424ca7c02cc871cfbf840b1.png44279c488dc7f5530ea0c835ccf6ac7b.png61b175cffc294d3e52b402adfbc003df.pnga0e33ab7b1c9c0e8f80c06cbbc017ffd.png5cd770a09bf3fd61f478804c4858d3ab.pngdb0ae6addc95f799ca6a084fc8fbe5f7.png80969ea125706d43c62b5d9c947c005e.png

通过 fuse_connfuse_dev 实现 failover。

ed8a9d953aa2a2337afb1089ebc20433.png4d4a75cf0620d9de54b7b7b85f4a8f22.png

通过 requeue 操作防止在 failover 时,FUSE server panic,造成正在操作的文件发生异常。

Chaos Mesh 2.0 Make Chaos Engineering Easy

fdea994d1ee10b685f30c89a531b666f.png

终于有 Workflow 了。

d478ed8354d5e4c9da47bec97694a5ed.pngedabb6c1deaf2d15c72baa1a7d1bdd89.png

那么,问题来了,刚执行了主机关机的 Chaos 实验,如何开机呢?

3f456e014f028afca4eea20c290b26e4.png

Run wasm applications on kubernetes edge cluster

K3s + Krustlet,有点非主流啊。

6c41b597f8fd651c83f28ca354615932.png

Deep Dive CRI-RM-based CPU and NUMA Affinity to Achieve AI Task Acceleration

不得不说 Intel 这个东西设计的可以的。上篇还说 Kubelet 应该出个插件机制来解决这种问题,Intel 就换另一个思路解决了。

c7b4eae07966e504dddd29c2b4a7377d.pngf2ff66d9efe24a1b5216609ef3fca0a4.pngf6b9ca491e4e64457046f7eb9f8eb22e.png

“吵闹的邻居”经典问题。

2c9d9b4e3c14cdeceb7ae8c0608b8fce.png2f16b0f9796aa647791d3d71619c7db4.pnga0871e544b49210805d67e8d289994ad.png

还支持了傲腾。

7603f1a403c9d0344eaa5a2df0230d0f.png3da75987718c29a64d750e4325adca5c.png

在每个节点上做了小粒度的 CPU 池化,将 CPU 分成能共享和不能共享两类。

5ee032a796a20f481254633e5d38c202.pngbb5c80c9203598a540cd178e743408f2.png11f083a24fcc365cb362657049d7304d.pngf7bdb0293aa50fa39aabd7928bce272b.pngd3d70ae432e716dd75be3143da42eff7.pngd8dc88bd9d2e11ea088a3293e08325cd.png1f2a365ed3a5b326399ed442f80eaa01.png

项目开源仓库地址:https://github.com/intel/cri-resource-manager

有个 PDF 可以参考:https://www.intel.cn/content/dam/www/central-libraries/cn/zh/documents/inspur-aistation-unlocks-compute-with-intel-cri-rm-for-cpu-affinity-scheduling.pdf

BFE Modern Layer 7 Load Balancer for Enterprise Application

BFE 支持了 Ingress。

7fe1581bcfdeab644704d650c5c67b91.png08373da42162474c64046f04feba2f31.png

控制平面也开源了:

  • https://github.com/bfenetworks/dashboard

  • https://github.com/bfenetworks/api-server

  • https://github.com/bfenetworks/conf-agent

BFE 没什么好说的,用就对了。

Best Practice DNS Failure Observability and Diagnosis in Kubernetes

f1f074905b193f2a3f84452864171c10.png61679af4c7e9be02d0de69983c505db9.pngec2aa79caa65845cf33154862a16047e.pngcabbd6f0524b5023d4b4ae2e179eeaf5.png88ca440716741ebd6971f644a63f4ff2.pngf3f8c4e17d837d45ba7f8fc487b3e07a.png

都是常见问题,基本都遇到过。

可以配合官方文档食用:https://kubernetes.io/zh/docs/tasks/administer-cluster/dns-debugging-resolution/

服务端诊断:

3c539d0c9d5072a5d26ac8f2aaef7a38.png53e7363819cee311554d538d163ca364.png28e11c1ad42db481e4bc75b20e10070b.png02f858568741406f109572387b1a385a.png

dnstap 插件比较有用。

客户端诊断:

e6aac9ebb4f887c48d98bf2df2ee5571.png

https://gist.github.com/xh4n3/61d8081b834d7e21bff723614e07777c

果然,也提到了 pwru。pwru 才是 YYDS。

pwru 刚开源没多久:https://github.com/cilium/pwru

85654fda5e54b4ecf23faa7813d2657a.png

Packet, Where are you 的视频讲解:https://www.youtube.com/watch?v=NhlR11Fp69g

3b69d7dc30b2574659af522380c32c7b.png8ced39079b4d1aaaf70d524f277b459b.png

More Secure and Confidential Computing on Linux with Nitro Enclaves

虽然也是打广告,但 Nitro Enclaves 这个东西还是挺有意思的。

2fa4d72fdd546473dd59dd10924b0b0e.pngac9a19f961e46686807fcfd0aa31c77a.pnga2ed8dbf58a14502874dd26ff5e08451.png

连 SSH 都没有。

df1f2111cfe1a7d65025f188d8ed87a9.png37beea821f4a7b9122951b68433c09d5.png

Exploring Cloud Native Big Data Platform in SPDB

一个新项目 Piraeus Datastore:https://github.com/piraeusdatastore/piraeus

DRBD 是老技术了,没想到在 K8s 场景下还能接着用起来。

DRBD 是一个基于软件的、shared-nothing、复制机制的存储解决方案,在主机之间镜像块设备(硬盘、分区、逻辑卷等)的内容。

  • real time,数据的修改会被实时同步

  • transparently,应用程序不需要感知数据存储在多个主机上

  • synchronously or asynchronously

DRBD 构成了一个虚拟块设备的驱动程序,DRBD 位于系统 I/O 堆栈的底部。DRBD 无法识别文件系统是否损坏。

e2f7a8e577051914656bde3a36adfdc5.png

Vivo's AI Computing Platform on Kubernetes

拼积木大合集,没有太多新意,但都非常落地,遇到了大家都可能会遇到的问题,也有一些通用的解决方案。

d2a16e6e914b55761a1f995549f32018.png2e9762954696028608facb789ec1132a.png

都是老生常谈的问题:

  • Ring Allreduce

  • 任务调度顺序

aa8f450960c1734faa979b570ee7caf1.pngeb2e83a3cc2d3c442e490e7435d26639.pngb8b4171ecca235e621f32b0f461f65aa.png7c73f1eda6061c1685f99b96b7c264de.pngd781aa4a0281e39175a023bf82c7bced.png

KEDA 其实也问题多多,即使自己写插件也只能解决一部分问题。

c57bc7381878317a2808cf2204b321ed.png

VictoriaMetrics 才是 Prometheus 的最佳归宿。

6c6851a83c270d499fa92abb568e3d14.png

VK 问题也很多。

755da772d693f466354d7500b5b6becc.png

DGL Operator Distributed Graph Neural Network Training with DGL and K8s

一个 Operator 从 0 到 1 的实现过程。

项目已开源:https://github.com/Qihoo360/dgl-operator

18a1ef2ed3a1a98146c533b9676524b9.pngf4c0e4b6a6d130fdb04c34cd8ed6aaae.pngde2a86635b33461910c0c51aac886565.pngf651c10c373876fdfade34b2f0f22ef6.pngbb24a0f6b9e15bdc5ee8a3d0e73247c2.pnga6dbefb2d9c5cb9a952be1c5dc96c062.pngacbeb72e7fb3dbf8f09966e19137a3a5.pngf629a4723654420a17b88fcdf92fb53c.png6a65b7bf569c6716d254b5197a4e6052.png7c167953fb9525316ee1ba9d22514eeb.png4fb5eee8f39e062160e6df89ba7e9595.png29fb1b9a35bbd0a918657bcad57480cf.png02d8943f8caca825558154c9d5bf034f.png

SuperEdge Promoting Kubernetes to the Edge of Technology Decryption

2577115bc3fc1ca13d29b0a4cd2c220d.png8e2042ce6d88b5d316e505d60f52fb19.pngb2e5f3239b3d4d6b6f0ac36849cfa117.png

lite-apiserver 可以抽出来做通用的 apiserver 缓存层。

0ba246b907d955753b36c2fe1b8eb341.png4b550b1e16ca7350a06341afa4886f9c.pnge4f6d726557d609cbbd55683e257f836.pngc9099eda1bb5821c478152982f7e1c08.png

用 For 循环也能实现嘛。

61d140fefa0a5c87c4bd16b8fc762378.png230c4ff70c588d92da1437b92f15cfbe.png

云边通信还需要看一下 fabedge。

BPF Introduction, Programming Tips and Tricks

科普型 Session。

ccca407b00818286419cea887477c872.png99a77acf72ca8f14ff3fbb4d375edc89.png7cbd13e320f4ce00f40a8567e5d696c5.png7e6d8532cb418742853a9a125a38e494.pngccdb7262f6ed36b8c4dabac2bdeb1ee4.png879c8f715d261745134996ce76eb4f0a.pngdc1e3b2281a2f4beec13bb6e8bc40a50.pngc9098e33f409180ad547f01cf2e3cbf0.png28470c4026024b1042513b5eb6a8adf7.pngfefe00c46c96c829ba20714bdbc3f239.png7d1c80f018874af46ba7e4d814c763aa.pngaea6129e94c30c305231981df42321c6.png8a1232bf130af5af2f925842c3935c13.png3ed7f995e1360b56f4820165f8185d1f.png517a48a4711357a2311f24fbc27475a7.png
  • https://nakryiko.com/posts/libbpf-bootstrap/

  • https://github.com/libbpf/libbpf-bootstrap

  • https://github.com/iovisor/bcc/tree/master/libbpf-tools

  • https://nakryiko.com/posts/bcc-to-libbpf-howto-guide/

  • https://en.pingcap.com/blog/tips-and-tricks-for-writing-linux-bpf-applications-with-libbpf

BPF 看似很火,实则用不起来的原因:

  • 内核版本太低 3.10,不会升级也不敢升级内核

  • 对操作系统知识很陌生,hold 不住,只能用用现成的 BCC 之类的工具,或许也不用

Monitor mesh for edge clusters

e7a653377089bcd573f95bcf0cd9366b.png

思路不错,应该也适用于用户自定义/多集群/多云/混合云场景。

Data panel 相当于做了 sharding。

6265fa73f6dd0ce90a4c472e779871fa.png66da8799879efc68a98f2b5c31fa3d4e.png788452112e2010c61f1d9433b31e4133.png

监控数据双写。

c389f0e6c4c55a8ca29b1d76750a7b19.png

InfluxDB 主备 + 分片。

十个分布式时序数据库,七个用 InfluxDB,两个用 TDengine,还有一个用 Apache IoTDB。

Keep Persistent Volumes Healthy for Stateful Workloads

d50db5e9ca5dcd7dbb4638c2a395ef15.pngfb86cb0a3b6a4c92125eeeeb1415fa53.png6d2e4ae01577646e7fb83035b13ea45f.pngd2cfdcb23228870bf8c7796a40b3669e.pnga7c4d9e78066ee0140bada20e3573805.png81104797241f9cd97cc395c35fee871a.pngcf7cb924e2d546bb6047e2561faa8989.png96c55cac3cf2afcb6fe372bfd6b269c8.png

权限控制和操作滞后还是有必要的。

数据及时备份。不过 Velero 能做的很有限。

CSI Driver 平滑重启/升级也是个问题。

c98f83737af67255f7dcd52d23ad1ff3.png936fa33d9ed976482f81fd981e82e287.png715b64de769a43b5681ba3429cf0e981.png

但这种对客户端要求又很高,好多客户端实现上不是那么优雅。

上述图片来自:https://yunify.anybox.qingcloud.com/s/VkmOPXFNFVjMdhbfvbTfDjk1AZuwqXqO?type=file&id=4312918

Effective Data Access In Kubernetes for Data-Intelligence Application

Fluid,没有什么好说的,用就对了。

0a87e6d07d0defa60ba26834dfaaa2e3.pngaac6f9fcd2a72efea7a630269d452cbd.png

期待 Fluid 能支持更多的 Runtime,为更多的数据调度场景服务。

Intro and Deep Dive into ChubaoFS

ChubaoFS 还是很好用的。

32e371c33025eb475209a70d02647779.pngd33307923760fa388aac8d5cebe15d78.png18d85f8d9cd5321dcdaeffd2d2e30b53.png43c272baf5b33902e7c152d21c68dc50.pnge82bae512a4fcea6491fda94f63fc68e.pngca6aa80ac604389e3987dfa708e56386.png9cc53f81c462425cc11739614582ff7c.png

如何让 FUSE 在容器环境下跑的又稳又好,应该是 FS 都亟需解决的吧。

Extend the operations for container runtime in OpenKruise

0d27402c87c7e9d696090a834796520c.png8066c757c5fbb4a51e133b51e129c391.png

尽在 Kruise-daemon。

不过感觉 Kubelet 真的需要插件机制。

dea7afb0cdad31cd2bf0b2b13f53bef2.pngb5aae1bdb9b82f63ea09fd72337a02e0.png658d0f6d6f045e41aae70bbda09337d8.png

原地升级也是老牌需求了。

可以配合官方文档一起看:https://openkruise.io/zh/docs/core-concepts/inplace-update/

2a3475a9a61953e9674cf1c4288a2b13.pngf217f79fc05f2f4c458886dd7eef7eb1.png

Protect your database workloads in K8s

Velero 相关的 Session。

8fe3ef3f8ee8c8fa882feacaf729dfa0.pngd2a3a6b5abc6986fa5ffaa2b764b9ed5.png

应用的数据一致性,还是需要依赖应用自身啊。

f8037e6f1b0127d1d08b2120f1347cb6.pnge67c46e512a5d4568a47a6c1db0b158a.png

Amberapp 主要是为了解决 Velero hook 的局限性。

项目已经开源:https://github.com/jibudata/amberapp

现阶段支持:

  • PostgreSQL

  • MongoDB

  • MySQL

ML training acceleration with heterogeneous resources in ByteDance

d96ee7f67e51bcc720c0ede476b6bdce.png5b7ec5b61b3b89a227283288de8df437.png219ad272576b36a119c67912cc16c53e.png028c1fabda83ca05aae4f4df3f638db5.pngfca48c1ca2d48719186f383aeb9f2bd8.pnge718a1386bd8f337663ce9d8eda2a0d4.png

如何实现分配 0.1 卡、如何做隔离没有展开讲(除 MPS 外)。

564546923264107aabd7cfba1d33f6b3.png

主要依赖 VK 实现。

f863696714aee9e06d2d37ada08a6c9b.png

异构硬件的资源隔离与亲和性,包括异构的 GPU 网卡直通,应该是件有趣的事情。

316e2171f17808edb218d44eb6ed88cb.png

更丰富的调度策略。

想要性能好,还是得靠钱堆,感觉没什么黑科技呀。A100、V100、RDMA、智能网卡都需要钱,小公司根本玩不起。

Overview of CNI 1.0.0 and preview of CNI 2.0

49db8698b753e0a7818cc45bb02f8214.pngc3e633e9f5c8e76cdce10161e9f8bfad.png

如果能在 2.0 改成 gRPC 会灵活很多。

a43e4d184fb2223e187a55965fed3324.png64c67726ba10d24a8450e6e1b6d8bb12.pngcd87b0f02529c62f9c6c057fcfb73380.png3f79d22a25a315c1bcf6a91beae4b385.pngf61d667b7069e6fd8c559e05acb36996.pngfce0c479dc9f011161af24667d73dd5a.pngf142a4afa04eae3b4f1f1d241429ebfa.png

如果能解决中心化 IPAM、通用化多网卡配置就非常棒了。

eaa40d07deaed1f44e741332bafd28cc.pngf894c55c26e7070c7cd0619262609b69.png1d7aa4401600722f4bd04443f1ba0fc1.pngbe8d472ec46bc94298ea8ea4ce3f7070.png

又回到了 API First。

7bce7e647390944cc452ffc4b4c73eba.png

1.0 -> 2.0 能不能平滑升级是个问题啊。

42f09d3fe0a812a9125c7e32cbe7ae84.pnge2a68db55e9f8834361c394d5fecd82f.png
  • 如何做到动态升级,而应用层无感知?

  • 多租户如何做隔离?

Kubernetes SIG Storage Introduction and Update

3f88c89a66a59be2d682fab392102219.pngf943be28c47d05fc1e0a4b5c466be067.pngf602ecb494f4c4bf3eb018a7d2a84d61.pngbafd1a5816da10964b80554fa9db4eb3.png

和 CNI 遇到了同样的问题,就是如何兼容厂商的多样性。

Heterogeneous multi-cluster full mesh communication practice

b96340b5104326fde4e10823762eeac6.pngb3a410455ba49e862a2c288d8f559344.png9840350a2911c814a6f705fdacae5853.pnge65e2d492ee5c0bd7ce21d5e16d65546.png7f7efc8e4b0091473a3d9e47aac545a0.png62431ee9594f92f8367a863d6dbcee2b.png0b0590cd513320b903050ab5e1e9380b.png

其他参考资料件:

  • https://github.com/antrea-io/antrea/blob/main/docs/design/ovs-pipeline.md

  • Antrea 架构详解 https://mp.weixin.qq.com/s/5KI3AXP5AWFE3lCJ7n-U5A

小总结

所有视频均可以在 CNCF 的油管 channel 上观看。

https://www.youtube.com/playlist?list=PLj6h78yzYM2PjmJ9A98QCXnMsmONhU--t

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值