KubeCon China 2021 回顾(下)

这也是一篇长文。

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

4ad5e04bb9d555a7319a8dfc298c228d.png

原子能力非常优秀了。

a2ad0b0a218776266ef23c465bf9c0f2.png

基于 Tekton 做扩展。

b0d7996cac3539a00bb846001e10cf51.png d755ad70618946f8ad38f886b390b1a0.png

cp-controller 支持了 sharding。

b07e5c23926ff1ee3138259f06178d4a.png

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

Improve FUSE Filesystem Performance and Reliability

这个 Session 也很硬核。

f7aed4a8851effacd007b1a6b1feca53.png 4a590c5ec4b66fd8f5d75e452cf4bbb4.png

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

8b810c69f86d0ac0c8739450356af70a.png d1995a3559180dd6dfa2eb203649411d.png c4da465894f7051e0ef309f2dde2c4cd.png 95c251f225dd9575d48fa7e8b4318e84.png 9e2bba3f30eb8746583598bb2dd630e9.png

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

78b509206424ca7c02cc871cfbf840b1.png 44279c488dc7f5530ea0c835ccf6ac7b.png 61b175cffc294d3e52b402adfbc003df.png a0e33ab7b1c9c0e8f80c06cbbc017ffd.png 5cd770a09bf3fd61f478804c4858d3ab.png db0ae6addc95f799ca6a084fc8fbe5f7.png 80969ea125706d43c62b5d9c947c005e.png

通过 fuse_connfuse_dev 实现 failover。

ed8a9d953aa2a2337afb1089ebc20433.png 4d4a75cf0620d9de54b7b7b85f4a8f22.png

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

Chaos Mesh 2.0 Make Chaos Engineering Easy

fdea994d1ee10b685f30c89a531b666f.png

终于有 Workflow 了。

d478ed8354d5e4c9da47bec97694a5ed.png edabb6c1deaf2d15c72baa1a7d1bdd89.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.png f2ff66d9efe24a1b5216609ef3fca0a4.png f6b9ca491e4e64457046f7eb9f8eb22e.png

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

2c9d9b4e3c14cdeceb7ae8c0608b8fce.png 2f16b0f9796aa647791d3d71619c7db4.png a0871e544b49210805d67e8d289994ad.png

还支持了傲腾。

7603f1a403c9d0344eaa5a2df0230d0f.png 3da75987718c29a64d750e4325adca5c.png

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

5ee032a796a20f481254633e5d38c202.png bb5c80c9203598a540cd178e743408f2.png 11f083a24fcc365cb362657049d7304d.png f7bdb0293aa50fa39aabd7928bce272b.png d3d70ae432e716dd75be3143da42eff7.png d8dc88bd9d2e11ea088a3293e08325cd.png 1f2a365ed3a5b326399ed442f80eaa01.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.png 08373da42162474c64046f04feba2f31.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.png 61679af4c7e9be02d0de69983c505db9.png ec2aa79caa65845cf33154862a16047e.png cabbd6f0524b5023d4b4ae2e179eeaf5.png 88ca440716741ebd6971f644a63f4ff2.png f3f8c4e17d837d45ba7f8fc487b3e07a.png

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

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

服务端诊断:

3c539d0c9d5072a5d26ac8f2aaef7a38.png 53e7363819cee311554d538d163ca364.png 28e11c1ad42db481e4bc75b20e10070b.png 02f858568741406f109572387b1a385a.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.png 8ced39079b4d1aaaf70d524f277b459b.png

More Secure and Confidential Computing on Linux with Nitro Enclaves

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

2fa4d72fdd546473dd59dd10924b0b0e.png ac9a19f961e46686807fcfd0aa31c77a.png a2ed8dbf58a14502874dd26ff5e08451.png

连 SSH 都没有。

df1f2111cfe1a7d65025f188d8ed87a9.png 37beea821f4a7b9122951b68433c09d5.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.png 2e9762954696028608facb789ec1132a.png

都是老生常谈的问题:

  • Ring Allreduce

  • 任务调度顺序

aa8f450960c1734faa979b570ee7caf1.png eb2e83a3cc2d3c442e490e7435d26639.png b8b4171ecca235e621f32b0f461f65aa.png 7c73f1eda6061c1685f99b96b7c264de.png d781aa4a0281e39175a023bf82c7bced.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.png f4c0e4b6a6d130fdb04c34cd8ed6aaae.png de2a86635b33461910c0c51aac886565.png f651c10c373876fdfade34b2f0f22ef6.png bb24a0f6b9e15bdc5ee8a3d0e73247c2.png a6dbefb2d9c5cb9a952be1c5dc96c062.png acbeb72e7fb3dbf8f09966e19137a3a5.png f629a4723654420a17b88fcdf92fb53c.png 6a65b7bf569c6716d254b5197a4e6052.png 7c167953fb9525316ee1ba9d22514eeb.png 4fb5eee8f39e062160e6df89ba7e9595.png 29fb1b9a35bbd0a918657bcad57480cf.png 02d8943f8caca825558154c9d5bf034f.png

SuperEdge Promoting Kubernetes to the Edge of Technology Decryption

2577115bc3fc1ca13d29b0a4cd2c220d.png 8e2042ce6d88b5d316e505d60f52fb19.png b2e5f3239b3d4d6b6f0ac36849cfa117.png

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

0ba246b907d955753b36c2fe1b8eb341.png 4b550b1e16ca7350a06341afa4886f9c.png e4f6d726557d609cbbd55683e257f836.png c9099eda1bb5821c478152982f7e1c08.png

用 For 循环也能实现嘛。

61d140fefa0a5c87c4bd16b8fc762378.png 230c4ff70c588d92da1437b92f15cfbe.png

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

BPF Introduction, Programming Tips and Tricks

科普型 Session。

ccca407b00818286419cea887477c872.png 99a77acf72ca8f14ff3fbb4d375edc89.png 7cbd13e320f4ce00f40a8567e5d696c5.png 7e6d8532cb418742853a9a125a38e494.png ccdb7262f6ed36b8c4dabac2bdeb1ee4.png 879c8f715d261745134996ce76eb4f0a.png dc1e3b2281a2f4beec13bb6e8bc40a50.png c9098e33f409180ad547f01cf2e3cbf0.png 28470c4026024b1042513b5eb6a8adf7.png fefe00c46c96c829ba20714bdbc3f239.png 7d1c80f018874af46ba7e4d814c763aa.png aea6129e94c30c305231981df42321c6.png 8a1232bf130af5af2f925842c3935c13.png 3ed7f995e1360b56f4820165f8185d1f.png 517a48a4711357a2311f24fbc27475a7.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.png 66da8799879efc68a98f2b5c31fa3d4e.png 788452112e2010c61f1d9433b31e4133.png

监控数据双写。

c389f0e6c4c55a8ca29b1d76750a7b19.png

InfluxDB 主备 + 分片。

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

Keep Persistent Volumes Healthy for Stateful Workloads

d50db5e9ca5dcd7dbb4638c2a395ef15.png fb86cb0a3b6a4c92125eeeeb1415fa53.png 6d2e4ae01577646e7fb83035b13ea45f.png d2cfdcb23228870bf8c7796a40b3669e.png a7c4d9e78066ee0140bada20e3573805.png 81104797241f9cd97cc395c35fee871a.png cf7cb924e2d546bb6047e2561faa8989.png 96c55cac3cf2afcb6fe372bfd6b269c8.png

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

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

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

c98f83737af67255f7dcd52d23ad1ff3.png 936fa33d9ed976482f81fd981e82e287.png 715b64de769a43b5681ba3429cf0e981.png

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

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

Effective Data Access In Kubernetes for Data-Intelligence Application

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

0a87e6d07d0defa60ba26834dfaaa2e3.png aac6f9fcd2a72efea7a630269d452cbd.png

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

Intro and Deep Dive into ChubaoFS

ChubaoFS 还是很好用的。

32e371c33025eb475209a70d02647779.png d33307923760fa388aac8d5cebe15d78.png 18d85f8d9cd5321dcdaeffd2d2e30b53.png 43c272baf5b33902e7c152d21c68dc50.png e82bae512a4fcea6491fda94f63fc68e.png ca6aa80ac604389e3987dfa708e56386.png 9cc53f81c462425cc11739614582ff7c.png

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

Extend the operations for container runtime in OpenKruise

0d27402c87c7e9d696090a834796520c.png 8066c757c5fbb4a51e133b51e129c391.png

尽在 Kruise-daemon。

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

dea7afb0cdad31cd2bf0b2b13f53bef2.png b5aae1bdb9b82f63ea09fd72337a02e0.png 658d0f6d6f045e41aae70bbda09337d8.png

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

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

2a3475a9a61953e9674cf1c4288a2b13.png f217f79fc05f2f4c458886dd7eef7eb1.png

Protect your database workloads in K8s

Velero 相关的 Session。

8fe3ef3f8ee8c8fa882feacaf729dfa0.png d2a3a6b5abc6986fa5ffaa2b764b9ed5.png

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

f8037e6f1b0127d1d08b2120f1347cb6.png e67c46e512a5d4568a47a6c1db0b158a.png

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

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

现阶段支持:

  • PostgreSQL

  • MongoDB

  • MySQL

ML training acceleration with heterogeneous resources in ByteDance

d96ee7f67e51bcc720c0ede476b6bdce.png 5b7ec5b61b3b89a227283288de8df437.png 219ad272576b36a119c67912cc16c53e.png 028c1fabda83ca05aae4f4df3f638db5.png fca48c1ca2d48719186f383aeb9f2bd8.png e718a1386bd8f337663ce9d8eda2a0d4.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.png c3e633e9f5c8e76cdce10161e9f8bfad.png

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

a43e4d184fb2223e187a55965fed3324.png 64c67726ba10d24a8450e6e1b6d8bb12.png cd87b0f02529c62f9c6c057fcfb73380.png 3f79d22a25a315c1bcf6a91beae4b385.png f61d667b7069e6fd8c559e05acb36996.png fce0c479dc9f011161af24667d73dd5a.png f142a4afa04eae3b4f1f1d241429ebfa.png

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

eaa40d07deaed1f44e741332bafd28cc.png f894c55c26e7070c7cd0619262609b69.png 1d7aa4401600722f4bd04443f1ba0fc1.png be8d472ec46bc94298ea8ea4ce3f7070.png

又回到了 API First。

7bce7e647390944cc452ffc4b4c73eba.png

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

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

  • 多租户如何做隔离?

Kubernetes SIG Storage Introduction and Update

3f88c89a66a59be2d682fab392102219.png f943be28c47d05fc1e0a4b5c466be067.png f602ecb494f4c4bf3eb018a7d2a84d61.png bafd1a5816da10964b80554fa9db4eb3.png

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

Heterogeneous multi-cluster full mesh communication practice

b96340b5104326fde4e10823762eeac6.png b3a410455ba49e862a2c288d8f559344.png 9840350a2911c814a6f705fdacae5853.png e65e2d492ee5c0bd7ce21d5e16d65546.png 7f7efc8e4b0091473a3d9e47aac545a0.png 62431ee9594f92f8367a863d6dbcee2b.png 0b0590cd513320b903050ab5e1e9380b.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

  • 0
    点赞
  • 1
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值