KubeCon China 2021 回顾(上)

这是一篇长文。真的很长。文章包含大量超链接,图也很多。PC 端浏览可能体验会好一点。

下文包含个人理解与主观情感,并未包含所有 Session。图片来自会议 PPT、付费书籍、网络媒体。

会议议程及 PPT 下载:https://kccncosschn21.sched.com/

第一个主题演讲还提了一下 Dan Kohn。

突然有些唏嘘,如果没有 Dan Kohn,应该不会有 KubeCon China 吧。

Build an Open Source Distributed Cloud Native World

华为云提到的分布式云原生概念。

1cd8e6621341e9f2e5a561e393bbecfa.png

主要是围绕 KubeEdge、Volcano、Karmada 做相关讲解和介绍。

How You Can Create a CNCF Project

张磊的 Session 非常有意思。

bd24b91c44c53b62820c9ebaac64f87d.png

选择把项目交给 CNCF 的原因:

  • 中立、可信赖

  • CNCF 中的项目具有同样的价值观,大家的想法类似,更容易合作、互操作、互相借力

  • 世界级的推广策略

  • 完善的开源治理方法

  • 通过兴趣小组,可以获得相关的建议

CPU Burst Getting Rid of Unnecessary Throttling, Achieving High CPU Utilization and Application Performance at the Same Time

该 Session 重点全在 PPT 上,直接看 PPT 即可。

该功能已合入 Linux Kernel 5.14。

CPU Burst 的特性可允许平均 CPU 利用率低于 CPU 限制情况下可能的突发使用。

应用 CPU Burst 后,用户可以同时获得高 CPU 利用率和高应用程序性能。

CPU Burst 在之前有过介绍(也是该 Speaker 的文章):

  • 让容器跑得更快:CPU Burst 技术实践 https://www.infoq.cn/article/y2semvajjgxj9mbg9p00

一张图解释什么是 CPU Burst。

044c28002093949c74207f8e8f3f4b44.png

图片来自上述 InfoQ 链接。

399573fb02f3a05372499a2d3ebab762.pngbffe8f400aeb0147878603d197beb329.png86f6822f061c6d3b37b9224659f9e8d9.pngdda124439f964ed56dc5f0b673bcf451.pnge7a74fc70002c00ca50e6a1ec7ea6ccd.png7a680618690140fc782977d668a0cd41.pngdd286915029dbf15d7b5fb051c16a920.png6e578efc86313787950130a00d717cc2.pngaf24ff57021ec5e52b10c1e132da9822.png0c38954f3afaba662b33a705ede75b4f.png5d7dfc5a3da1cc790b83f20a74446c85.png94ed801517a64501b43f666fe7de5d1c.png6d2710e8147d655b1f2a51622902ce2b.pngd8103c2e9117567f7f16be340c91f553.png
How CPU Burst affects other pods
0aa2712ede596271d9240a030c95a06e.png5cee7c8cd6e76127332cf7952c325987.png826fe8a5aea534536c708c793d451b52.png6f929e1f051801ae9d394320e8095d8b.png49f91a3c02ad3cac0829c6cb0ee1a05b.png

CPU Burst 不是银弹。需要合理配置 CPU Burst buffer。

Beyond CUDA GPU Accelerated Computing on Cross-Vendor Graphics Cards with Vulkan Kompute

直接看如下链接的文章就好:https://towardsdatascience.com/machine-learning-and-data-processing-in-the-gpu-with-vulkan-kompute-c9350e5e5d3a

Apiserver Builder Extending Kubernetes via Aggregated Apiserver

Apiserver Aggregation 整体流程的介绍、与 CRD 的对比、如何不依赖 Etcd、以 OCM 举例等。

12878fa9cb483a88a3d60fdbfea3feee.pngf2b5ef7ee84e62ef71bdaf2aa5855e18.png14268b10d0ecafed517586f093d67042.png8e2776b20897fd7040c01f3553913adb.pnge47382f8cad1bc279b941bc41e423861.png6df3e1e5205a2a01b9a65de306a8e2e1.pngebad87115b2be441c8cf2d04b0123681.png

代码参考:https://github.com/kubernetes-sigs/apiserver-builder-alpha/blob/63a62eda7b302fcba08cdcfc5f01cc5ad5751a5a/example/non-etcd/cmd/apiserver/main.go

Apiserver Aggregation 的相关资料似乎并不多,但其实 CRD 数量多到一定程度或者在某些特定场景下,Apiserver Aggregation 还是非常好用的。Programming Kubernetes 一书中也有一些介绍,可以作为入门资料。

Zero Trust Network Turnkey Solution to Support Zero Trust Service Mesh

在混合网络场景(办公网 + 私有云 + 多个公有云 + 外部用户)下会很有落地场景。

20f5fb86ad84aaf85b5d75f69f125128.pngdd3eaef30e4a0079a9ef4cbb437cb476.pngafa8e4596679e237515d1b2255b138f6.png

具体可参考 Zero Trust Networks 一书,有中文版。

f15eb15bec8bdad4b9230bc16156c354.png89ec012ee841af0cdd1289ef79c1fd70.png

引用 Zero Trust Networks 书中的一张图可能更具有指导意义吧。

2bc54a3fcfecb6d6c91b42e0a58fae5a.png
Secure Gateway 架构
986b0b1291344963530b8c67413b7cda.png8d15a1c4f0c04a35f05ec01b34db62f7.png

看起来整套架构也是软硬结合了,没有一个团队做支撑,想要快速落地类似架构可以说是没太大可能了。

Ingress Load Balancer 架构
da202ceba7e5ddfcff3bfc6a11556452.png

主流的几个 Ingress Controller 应该还都不支持 WireGuard。

6820ab4d7f9d071d9b971ae542bf87b7.png

也未见有相关的通用方案?在 LB、Gateway 中集成 WireGuard 是否是最佳实践?

不过把 WireGuard 和 DPDK 做到一块倒是一个新思路,包括结合 QAT 卡、宽指令集等,充分利用硬件做 offload 了属于是。

How to Efficiently Manage Tens of Thousands of etcd Clusters

5f1f3236b465331bd4a5487ceb7c1513.pnga194adbeb75d29df4c3e0474a05ffb70.pngef65b1212be71bd5bbe121f7613cf591.png
kstone

无巧不成书,腾讯 Etcd 管控工具也是基于 Apiserver Aggregation。

73ec6f05c7d217e78bdf5fc912ade52c.png7547eea192de3c450da637143e9f4651.png

迁移过程中这种版本依赖路径还是很有意义的。

腾讯这个项目已经开源了:https://github.com/tkestack/kstone。

kstone-etcd-operator
4bd690e1ed8a90038e7caacfd1f260f5.png6bd8d110bf0dcfa53e703eb173100fab.pngb028304dc3e86cffb26f9e7d2e99dfd2.png

正在做 Operator 都是抛弃 StatefulSet,自己造轮子。

82410489e634786c8d282634634a0001.png

这个 Operator 用的是 TAPP:https://github.com/tkestack/tapp

没有使用裸 Pod 主要是基于存储易用性上的考量。但我感觉没差多少。

1c3708dbe2a33adc3fca1251ed671cc1.pngba02feddb217b4864fcc9a76ec8c10d9.png9009fc9868ccdf277d21e5152d86cd55.png

支持备份到不同类型的存储介质中还是比较有价值的。

22c64be3ea3fcc4177e9ae60995a21cc.png8115ad63de2e09b8fe1fa4303a496480.png933262e152f0d59b50d0ffe53d8bbb05.pngd6b86192b9fe507c7d5b25391feaaf2c.pngae7c7ec3e60764089be4f20b1dc0e9fb.png
Cross-city hot backup and QoS feature practice

该部分非常落地。

c5e498d59f46d108eb006044aabf7fbc.png

方案 1 的问题主要是跨城读延迟较高。

816b822775177007627a06e74e834777.png

方案 2 的问题主要是就近读有旧数据、无法快速 failover。

d1d868bdc53fd7ab26f26a44b8a74151.png

方案 3 的问题主要是性能差、写量大会造成读到脏数据。

ac14babdf035ee8c594d977b713b8a76.png

方案 4,腾讯基于方案 3 做的加强版。

878d380cfff6b03c8c5ed74fbe341ba0.png

方案 5,将 syncer 节点伪装成 learner 加入集群。

该方案很像字节跳动一次分享上讲的 Kafka 跨地域同步:https://files.alicdn.com/tpsservice/cd9626b87ca646a05f05eb1d1c962126.pdf

InnerSource & DevOps They Are Soul Mates

谭老师讲的关于 InnerSource 的 Session。非常推荐观看。

8912013c34da945b04bf52c47e192b56.pnge78bddb50a359a3147da49af166c0d4a.png

写代码很重要,而写代码之前知道自己要写什么更重要,这句话真是太棒了。

a1fb3924ac680bdce58c22232746c441.png0106943d1d5b28e624ef0c1e6d61363e.png

Deep Dive Into Profilers How CPU Profilers Measure Your Application's Performance

CPU Profile 是可以获取当前函数消耗了多少 CPU 比例的工具。

7999c0cd6b423fc338cd6b2c71b5ea90.png6b2a65c885a71906ea2d1177e5b639cd.png10b91107c1d666cafb113f5f426f8b96.png

CPU Profile 工具适合对代码做性能调优、线上出现故障的时候。

CPU Profile 工具容易漏掉执行速度快且执行次数少的函数,比如对 CPU 负载并不高但 CPU hang 住在等待网络或者磁盘 I/O 的程序。

4e1e5d9910ac2b782f3e5e4ea4a6eef8.png10a685a56182e27b432585aa0914586a.png

为什么不在函数开始执行和结束执行的时候记录时间戳,然后相减?

  • 函数执行流程并不都在使用 CPU,比如陷入中断等待 I/O 等。(请求处理时间不等于 CPU 消耗时间)

  • 没有办法保证实时性。

9e0ba29d501a253f20ef5294898580b2.png

事后做 CPU Profile 会有点晚,需要持续采集 CPU Profile。

da0d05b6405cf2f41356876e5c71ad64.png

通过 Tag 来做分布式 CPU Profile。

Redteam Views Security Practice of K8s Cluster Administrator

通过攻击流程,阐述了 K8s 各个环节应该注意的安全问题。

9ed6d982e100edb262cdeaefad5f16b8.png9bf2356053877e04ab5aee2613efe405.png200225e756286dc14c0faad03ba662d9.png7f915fe862af18e0c31583401de2b769.pngd540d334db6da2b28d98fc76c7c5b43e.png350420af49da241fd36ab489b6539fdd.pngb89afff36ef05898257c521ab9e8605a.png74f9d83fdb680a3894347fa4deb6bb6d.pngabc14a5fcd726f91656762bb60f3c98f.pngadc753e146342e4efefefd57a211ec84.png77f63e48520c70e16bfe4014f62e5413.png

推荐同时阅读乐枕的这篇文章:https://developer.aliyun.com/article/765449

Build and Manage Multi-cluster Application with Consistent Experience

KubeVela
fe46de276e7c5d0e3029237502220224.pnge68cfa8cb6f9b7241a33111456c2f034.png
OCM
e97b4e382d2a23fdbc890bca97ab9be2.png0ec7c4fe1c86db3aadaa7d2f8140f503.png

A full-scenario colocation of workloads based on Kubernetes

432bea08eaaaa60c673e0b1e2007318f.pngc3adb4ebd9ea4578f3ad9c5bf2c1b5e3.pngd0caf016dd95a3047a63d49216369178.png

需要优先保证在线资源的可用性。

a89cf497943ed7c372780663ad3a04e6.png
Resource Prediction

为在线资源做画像,预测在线资源使用,动态做隔离。

f1790e61bfbb9a1b457901956393f2d9.pngce930f75c92071e6bb4d5db4685739fd.png

K8s BestEffort 容易在可用的资源范围内,调度大量的离线资源作业,造成资源阻塞。

通过修改 cgroup 层级结构来扩大混部资源池。离线资源统一管理,而不受 K8s 管理。

eedc56dd1134e425b53ca8b60cba91ec.png
Resource Isolation
5dfd9188e1d10baa5622a1c98647beef.png

这块感觉有点魔改了。

Interference Detection
c2c7a95b57f16c218bfdd33114dac431.png0ab6ae2d06e52c862e3cb8906ea95405.png04f4b9245b1f087d8ccddbb7d43ad08e.png567b29a732f5578860f0fa0a7eac7aa3.png046a29fbf3a07232295480cd1c087167.png

腾讯这个项目也开源了:https://github.com/Tencent/Caelus

How We Discover and Locate k8s Cluster Problems Before Users at Alibaba

加强版集群巡检,直接看 PPT 就好。

734910653077aa9a832bd4ce7c48baf4.png1967ab67bdaca5ea8da4a8189b604dda.png1fa8a3ddc76ce6469f6d46de0b9521c9.png99a09ed6c1ff3e0a8ff442e566bb9afd.pngf5854720cc0278974fa1eaf24d1dac92.png62934891440a608c732e8d8255117be2.png

EROFS What Are We Doing Now For Containers

感觉通篇都很硬核。

在镜像存储方面打开了一扇新的大门。

ab1da48025daade3611b62cee99e2222.png6fa6d9fb67143566938972bf0fde2318.pngfee07850f41a3ce2e67f5f76fd821786.png531c218351a6be22dcbb609bdd3bec27.png

Kubernetes Multi-Cluster and Multi-Tenancy With RBAC and KubeFed

基于 KubeFed 的多租户方案。

833373bb25524bede8de23ce6a399edf.pngb3a81146586eeff4108a6791c72438e3.png9eb628996eee270635bad815ae50432d.pngb654c194287f628ee591cbbda824ac3c.png83263047c42286c8bf7f4b8ebc9e04f0.pngacc3edb2c7f04237cf9e673713ad6669.png

A story of managing kubernetes cluster with 15k nodes and various workloads

细节非常多。不过一般公司也没这么大规模。

e486bdaad14da3036f5d7b0b01ac558d.png

需要做集群请求流量分析与模拟。

1728e7c47634b8a44f27822234937aec.png6ad84ab103a06dedb9b1db2bb0287d08.png5b74af15bf8e4489230c609d61179540.png02003333f088d0de0dce3fab65a7ee17.png2baef0714147ef27ee93c20db324db86.png7fd9b59ac364171f3844a319dd6f025a.png6c543f546645e1698e49832860776e4e.png5e9307444bb3c8c11cc80db1ea606c7d.png274745a3438c8b1d5916fa6e916c9e2b.png

Service Mesh Acceleration From Iptables to Fully BPF

这两天朋友圈都在转发的网红 Session。

具体可以直接看腾讯云原生公众号:https://mp.weixin.qq.com/s/U6-wcBsBC-Khffb7kTBtjA。

Introduction to WasmEdge A Cloud-native WebAssembly Runtime

项目挺有趣的。

主要解决了 WebAssembly 的使用成本问题。

Panel Discussion How to Attract Developers to Join Your Community

非常有意思的 Session。

简单做了一下摘录:

  • 做一个好的项目,能实际解决开发者和用户的问题

  • 直接的价值交换

  • 组织驱动

  • 找到定位,区分用户群体

  • 上手门槛低,有成长路径

  • 消除参与社区的阻力

  • 运营者的积极的参与

  • 社区流程结构化

  • 需要主动站出来做一些事情

Managing Large-Scale Edge Cluster Over Unstable Network with KubeEdge

7ae2893fc2a308ee7655a98cdafe2f44.png

通过 WS + QUIC 替代 List & Watch,在不稳定的网络环境下避免大量重复传输造成的带宽浪费。

  • 增量传输。

  • 每次传输做响应,避免传输失败。

ac3f9ec9925638f3f8654183c9f0139f.png

通过 CloudCore 支撑更多的节点。

How to Build Your Cybersecurity Toolkits with Open Source Tools

来自 Aqua 的 Session。

基于边界保护在云原生场景下不是很适用。

31f8c40a774efb8fba59ab34261049b5.png

左移翻译成“前置”是不是好一些,感觉“事前”也有点牵强。

下面这张图作为补充更合适:

f46635d0497343913d4021d3fa52ebd2.png2d1d36487b112505bf9567322e4e7ca7.pnge79f40b1003998991ca828cfa994b936.png

供应链攻击是重中之重,感觉云原生场景下供应链攻击的相关资料真不多。

5b2a08e43929ecc690b1fc0f6fbe5508.png950664e772098046133d5462c5359819.png

上述两个图来自:https://gotc.oschina.net/uploads/files/15%20%E5%BC%A0%E6%99%8B%E6%B6%9B%20%E7%94%9F%E4%BA%A7%E7%8E%AF%E5%A2%83%E4%B8%8B%E7%9A%84k8s%E5%AE%89%E5%85%A8%E5%9B%B0%E5%A2%83%E5%8F%8A%E5%BA%94%E5%AF%B9%E6%8E%AA%E6%96%BD-%E5%BC%A0%E6%99%8B%E6%B6%9B.pdf

Aqua 全家桶。

7736851db18d5597004a787771663ae8.png5dd1d9b92f08d79cbb1aa3be751102e5.png98037eed37ea462d95b2e8eac59c01ec.png5a26cc8445eb181e115d617f78ecf15e.png

How To Migrate Kubernetes Cluster With Zero Downtime

b22b9bc49e586698ef1287c7085eb415.pngcf0ca907a246ac1bb299b0c09ad83f32.png99cceaa0f46697bb19e131312c9e37ee.png

Stateful Application 的迁移还是要靠应用自身的能力来完成啊。

6e6226ad2ec29b9e4df3e8b2db52037d.png1c06ed5cbc5c2a9d30cdcf80afc5c24d.pngbc72e12900ec5d9637803eb7e47b9f5c.png

流量迁移主要还是 LB + Cloud Controller Manager。

84b0c5bfc39b75452e47efa947270ce8.png5aa2c69705f58d6feaed6cfd478fc13c.png803c169ca6deda6fc58978307b3ba721.png

可以说非常值得网关产品借鉴。

bb302ed22366c744b4904f23ce44dff1.png

依赖健康检查的正确配置、容器的优雅退出。

28a5a24963ad43d5464b6ed486cbacb9.pngefcf575827dfd5e17c6bef04d5a51b52.png546213f9f190688497ecb8da4498f6fc.png

kube-proxy 最靠谱的使用方式就是不用 kube-proxy。

Bagua Lightweight Distributed Learning on Kubernetes

可以说是非常期待的 Session。

Bagua 刚开源的时候就在关注:

  • https://github.com/BaguaSys/bagua

  • https://www.infoq.cn/article/bqwk3vdvm3tlcz7blcrq

又回到了 100 张卡训个 Bert 的场景。多机多卡并行训练,好多公司既没能力,也玩不起。Bagua 看起来比 DDP 靠谱多了。

98ec63064b20499140b02b463e0d169c.png7fdec624078903ee1b0e70898107e15f.png28bcd924784d45de2266de2bc6c0013d.pngffe0db7ff0e69bb79fb39a4a96fdc8cb.png25fb35137c1a26cac5dff7e6614dedb8.png

这块细节比较多,还是直接看代码比较好。

984503c6ec650140f74e2031fa3a044c.pngcbf9c702b8acd0811b0d233082c2c1a8.png

直接重写 NCCL 可还行。

bd4b927e3d267679bc668565fe6405fb.pngac2004497df248a40713de68d35eb91c.png

Bagua 命名的由来非常有趣。

Exploration About Mixing Technology of Online Services and Offline Jobs Based on Volcano

感觉 Volcano 的设计比 Kubernetes Scheduling-Framework 好一点。

14cdc0ce6aacc325deb429adcd16352e.png9ca8e775c5efad8d133f43a1102bccbe.png68738e2d616711b4fec14dca628cc249.png

细节不是很多,L3 Cache 隔离怎么实现的没展开讲。

a3c67f400511fb95692ba4d542d3987e.png051b67a162f1e07b0f6b5cb30509dfa4.png

也要魔改 kubelet。kubelet 应该提供一个插件机制。

d18d3dd889b74ee7de9b1fd7279c4ad4.png4d523b6c564ea99a9cb3e8c97bed91cb.png0618a56f66d91e8b9220411d8eed04a5.png573746a05c348824c909be3e5eb1f355.png700b35c5007fb80438c718685d0690f4.png

如何做干扰检测没有展开讲。

小总结

混部和 eBPF 相关的主题明显变多了。

云原生安全的主题也变多了。

边缘计算场景有了新的花样 WASM。

除了 Operator 之外,也有一些新的 K8s 开发的相关 Session,比如 Apiserver Aggregation。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值