我是靠谱客的博主 斯文乌冬面,最近开发中收集的这篇文章主要介绍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.png bffe8f400aeb0147878603d197beb329.png 86f6822f061c6d3b37b9224659f9e8d9.png dda124439f964ed56dc5f0b673bcf451.png e7a74fc70002c00ca50e6a1ec7ea6ccd.png 7a680618690140fc782977d668a0cd41.png dd286915029dbf15d7b5fb051c16a920.png 6e578efc86313787950130a00d717cc2.png af24ff57021ec5e52b10c1e132da9822.png 0c38954f3afaba662b33a705ede75b4f.png 5d7dfc5a3da1cc790b83f20a74446c85.png 94ed801517a64501b43f666fe7de5d1c.png 6d2710e8147d655b1f2a51622902ce2b.png d8103c2e9117567f7f16be340c91f553.png
How CPU Burst affects other pods
0aa2712ede596271d9240a030c95a06e.png 5cee7c8cd6e76127332cf7952c325987.png 826fe8a5aea534536c708c793d451b52.png 6f929e1f051801ae9d394320e8095d8b.png 49f91a3c02ad3cac0829c6cb0ee1a05b.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.png f2b5ef7ee84e62ef71bdaf2aa5855e18.png 14268b10d0ecafed517586f093d67042.png 8e2776b20897fd7040c01f3553913adb.png e47382f8cad1bc279b941bc41e423861.png 6df3e1e5205a2a01b9a65de306a8e2e1.png ebad87115b2be441c8cf2d04b0123681.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.png dd3eaef30e4a0079a9ef4cbb437cb476.png afa8e4596679e237515d1b2255b138f6.png

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

f15eb15bec8bdad4b9230bc16156c354.png 89ec012ee841af0cdd1289ef79c1fd70.png

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

2bc54a3fcfecb6d6c91b42e0a58fae5a.png
Secure Gateway 架构
986b0b1291344963530b8c67413b7cda.png 8d15a1c4f0c04a35f05ec01b34db62f7.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.png a194adbeb75d29df4c3e0474a05ffb70.png ef65b1212be71bd5bbe121f7613cf591.png
kstone

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

73ec6f05c7d217e78bdf5fc912ade52c.png 7547eea192de3c450da637143e9f4651.png

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

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

kstone-etcd-operator
4bd690e1ed8a90038e7caacfd1f260f5.png 6bd8d110bf0dcfa53e703eb173100fab.png b028304dc3e86cffb26f9e7d2e99dfd2.png

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

82410489e634786c8d282634634a0001.png

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

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

1c3708dbe2a33adc3fca1251ed671cc1.png ba02feddb217b4864fcc9a76ec8c10d9.png 9009fc9868ccdf277d21e5152d86cd55.png

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

22c64be3ea3fcc4177e9ae60995a21cc.png 8115ad63de2e09b8fe1fa4303a496480.png 933262e152f0d59b50d0ffe53d8bbb05.png d6b86192b9fe507c7d5b25391feaaf2c.png ae7c7ec3e60764089be4f20b1dc0e9fb.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.png e78bddb50a359a3147da49af166c0d4a.png

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

a1fb3924ac680bdce58c22232746c441.png 0106943d1d5b28e624ef0c1e6d61363e.png

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

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

7999c0cd6b423fc338cd6b2c71b5ea90.png 6b2a65c885a71906ea2d1177e5b639cd.png 10b91107c1d666cafb113f5f426f8b96.png

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

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

4e1e5d9910ac2b782f3e5e4ea4a6eef8.png 10a685a56182e27b432585aa0914586a.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.png 9bf2356053877e04ab5aee2613efe405.png 200225e756286dc14c0faad03ba662d9.png 7f915fe862af18e0c31583401de2b769.png d540d334db6da2b28d98fc76c7c5b43e.png 350420af49da241fd36ab489b6539fdd.png b89afff36ef05898257c521ab9e8605a.png 74f9d83fdb680a3894347fa4deb6bb6d.png abc14a5fcd726f91656762bb60f3c98f.png adc753e146342e4efefefd57a211ec84.png 77f63e48520c70e16bfe4014f62e5413.png

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

Build and Manage Multi-cluster Application with Consistent Experience

KubeVela
fe46de276e7c5d0e3029237502220224.png e68cfa8cb6f9b7241a33111456c2f034.png
OCM
e97b4e382d2a23fdbc890bca97ab9be2.png 0ec7c4fe1c86db3aadaa7d2f8140f503.png

A full-scenario colocation of workloads based on Kubernetes

432bea08eaaaa60c673e0b1e2007318f.png c3adb4ebd9ea4578f3ad9c5bf2c1b5e3.png d0caf016dd95a3047a63d49216369178.png

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

a89cf497943ed7c372780663ad3a04e6.png
Resource Prediction

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

f1790e61bfbb9a1b457901956393f2d9.png ce930f75c92071e6bb4d5db4685739fd.png

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

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

eedc56dd1134e425b53ca8b60cba91ec.png
Resource Isolation
5dfd9188e1d10baa5622a1c98647beef.png

这块感觉有点魔改了。

Interference Detection
c2c7a95b57f16c218bfdd33114dac431.png 0ab6ae2d06e52c862e3cb8906ea95405.png 04f4b9245b1f087d8ccddbb7d43ad08e.png 567b29a732f5578860f0fa0a7eac7aa3.png 046a29fbf3a07232295480cd1c087167.png

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

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

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

734910653077aa9a832bd4ce7c48baf4.png 1967ab67bdaca5ea8da4a8189b604dda.png 1fa8a3ddc76ce6469f6d46de0b9521c9.png 99a09ed6c1ff3e0a8ff442e566bb9afd.png f5854720cc0278974fa1eaf24d1dac92.png 62934891440a608c732e8d8255117be2.png

EROFS What Are We Doing Now For Containers

感觉通篇都很硬核。

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

ab1da48025daade3611b62cee99e2222.png 6fa6d9fb67143566938972bf0fde2318.png fee07850f41a3ce2e67f5f76fd821786.png 531c218351a6be22dcbb609bdd3bec27.png

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

基于 KubeFed 的多租户方案。

833373bb25524bede8de23ce6a399edf.png b3a81146586eeff4108a6791c72438e3.png 9eb628996eee270635bad815ae50432d.png b654c194287f628ee591cbbda824ac3c.png 83263047c42286c8bf7f4b8ebc9e04f0.png acc3edb2c7f04237cf9e673713ad6669.png

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

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

e486bdaad14da3036f5d7b0b01ac558d.png

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

1728e7c47634b8a44f27822234937aec.png 6ad84ab103a06dedb9b1db2bb0287d08.png 5b74af15bf8e4489230c609d61179540.png 02003333f088d0de0dce3fab65a7ee17.png 2baef0714147ef27ee93c20db324db86.png 7fd9b59ac364171f3844a319dd6f025a.png 6c543f546645e1698e49832860776e4e.png 5e9307444bb3c8c11cc80db1ea606c7d.png 274745a3438c8b1d5916fa6e916c9e2b.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.png 2d1d36487b112505bf9567322e4e7ca7.png e79f40b1003998991ca828cfa994b936.png

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

5b2a08e43929ecc690b1fc0f6fbe5508.png 950664e772098046133d5462c5359819.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.png 5dd1d9b92f08d79cbb1aa3be751102e5.png 98037eed37ea462d95b2e8eac59c01ec.png 5a26cc8445eb181e115d617f78ecf15e.png

How To Migrate Kubernetes Cluster With Zero Downtime

b22b9bc49e586698ef1287c7085eb415.png cf0ca907a246ac1bb299b0c09ad83f32.png 99cceaa0f46697bb19e131312c9e37ee.png

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

6e6226ad2ec29b9e4df3e8b2db52037d.png 1c06ed5cbc5c2a9d30cdcf80afc5c24d.png bc72e12900ec5d9637803eb7e47b9f5c.png

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

84b0c5bfc39b75452e47efa947270ce8.png 5aa2c69705f58d6feaed6cfd478fc13c.png 803c169ca6deda6fc58978307b3ba721.png

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

bb302ed22366c744b4904f23ce44dff1.png

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

28a5a24963ad43d5464b6ed486cbacb9.png efcf575827dfd5e17c6bef04d5a51b52.png 546213f9f190688497ecb8da4498f6fc.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.png 7fdec624078903ee1b0e70898107e15f.png 28bcd924784d45de2266de2bc6c0013d.png ffe0db7ff0e69bb79fb39a4a96fdc8cb.png 25fb35137c1a26cac5dff7e6614dedb8.png

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

984503c6ec650140f74e2031fa3a044c.png cbf9c702b8acd0811b0d233082c2c1a8.png

直接重写 NCCL 可还行。

bd4b927e3d267679bc668565fe6405fb.png ac2004497df248a40713de68d35eb91c.png

Bagua 命名的由来非常有趣。

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

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

14cdc0ce6aacc325deb429adcd16352e.png 9ca8e775c5efad8d133f43a1102bccbe.png 68738e2d616711b4fec14dca628cc249.png

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

a3c67f400511fb95692ba4d542d3987e.png 051b67a162f1e07b0f6b5cb30509dfa4.png

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

d18d3dd889b74ee7de9b1fd7279c4ad4.png 4d523b6c564ea99a9cb3e8c97bed91cb.png 0618a56f66d91e8b9220411d8eed04a5.png 573746a05c348824c909be3e5eb1f355.png 700b35c5007fb80438c718685d0690f4.png

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

小总结

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

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

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

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

最后

以上就是斯文乌冬面为你收集整理的KubeCon China 2021 回顾(上)小总结的全部内容,希望文章能够帮你解决KubeCon China 2021 回顾(上)小总结所遇到的程序开发问题。

如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。

本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
点赞(73)

评论列表共有 0 条评论

立即
投稿
返回
顶部