ArthurChiao's Blog

Recent Posts

  • 2022-06-04

    K8s 的核心是 API 而非容器:从理论到 CRD 实践(2022)

    本文串联了以下几篇文章的核心部分, Kubernetes isn’t about containers,2021 Kubernetes is a Database, 2019 CRD is just a table in Kubernetes, 2020论述了 K8s 的核心价值是其通用、跨厂商和平台、可灵活扩展的声明式 API 框架,而不是容器(虽然容器是它成功的基础);然后手动创建一个 API extension(CRD),通过测试和类比来对这一论述有一个更直观的理解。例子及测试基于 K8s v1.21.0,感谢原作者...

  • 2022-05-19

    K8s 集群稳定性:LIST 请求源码分析、性能评估与大规模基础服务部署调优

    对于非结构化的数据存储系统来说,LIST 操作通常都是非常重量级的,不仅占用大量的磁盘 IO、网络带宽和 CPU,而且会影响同时间段的其他请求(尤其是响应延迟要求极高的选主请求),是集群稳定性的一大杀手。例如,对于 Ceph 对象存储来说,每个 LIST bucket 请求都需要去多个磁盘中捞出这个bucket 的全部数据;不仅自身很慢,还影响了同一时间段内的其他普通读写请求,因为 IO是共享的,导致响应延迟上升乃至超时。如果 bucket 内的对象非常多(例如用作harbor/docker-registry 的存储后端),LI...

  • 2022-05-02

    BPF 进阶笔记(四):调试 BPF 程序

    关于 “BPF 进阶笔记” 系列平时学习和使用 BPF 时所整理。由于是笔记而非教程,因此内容不会追求连贯,有基础的同学可作查漏补缺之用。文中涉及的代码,如无特殊说明,均基于内核 5.10。 BPF 进阶笔记(一):BPF 程序(BPF Prog)类型详解:使用场景、函数签名、执行位置及程序示例 BPF 进阶笔记(二):BPF Map 类型详解:使用场景、程序示例 BPF 进阶笔记(三):BPF Map 内核实现 BPF 进阶笔记(四):调试 BPF 程序 关于 “BPF 进阶笔记” 系列 1 打印日志 ...

  • 2022-04-25

    [译] BPF ring buffer:使用场景、核心设计及程序示例(2020)

    译者序本文翻译自 BPF 核心开发者 Andrii Nakryiko 2020 的一篇文章:BPF ring buffer。文章介绍了 BPF ring buffer 解决的问题及背后的设计,并给出了一些代码示例和内核patch 链接,深度和广度兼备,是学习 ring buffer 的极佳参考。由于译者水平有限,本文不免存在遗漏或错误之处。如有疑问,请查阅原文。以下是译文。 译者序 1 ringbuf 相比 perfbuf 的改进 1.1 降低内存开销(memory overhead) 1.2 保...

  • 2022-04-17

    Cracking Kubernetes RBAC Authorization Model

    This post first appeared as Limiting access to Kubernetes resources with RBAC,which was kindly edited, re-illustrated and exemplified by learnk8s.io, andvery friendly to beginners.The version posted here in contrast has a biased focus on the design andimplementation,...

  • 2022-02-06

    [译] [论文] Raft 共识算法(及 etcd/raft 源码解析)(USENIX, 2014)

    译者序本文翻译自 USENIX 2014 论文In Search of an Understandable Consensus Algorithm (Extended Version),文中提出了如今已广泛使用的 Raft 共识算法。在 Raft 之前,Paxos 几乎是共识算法的代名词,但它有两个严重缺点: 很难准确理解(即使对专业研究者和该领域的教授) 很难正确实现(复杂 + 某些理论描述比较模糊)结果正如 Chubby(基于 Paxos 的 Google 分布式锁服务,是 Google 众多全球分布式系统的基础)开发者...

  • 2022-01-23

    Cracking Kubernetes Network Policy

    TL; DRThis post digs into the Kubernetes NetworkPolicy model, then designsa policy enforcer based on the technical requirements and furtherimplements it with less than 100 lines of eBPF code. Hopethat after reading through this post, readers will get a deeper unders...

  • 2022-01-02

    [译] [论文] BBR:基于拥塞(而非丢包)的拥塞控制(ACM, 2017)

    译者序本文翻译自 Google 2017 的论文: Cardwell N, Cheng Y, Gunn CS, Yeganeh SH, Jacobson V.BBR: congestion-based congestion control.Communications of the ACM. 2017 Jan 23;60(2):58-66.论文副标题:Measuring Bottleneck Bandwidth andRound-trip propagation time(测量瓶颈带宽和往返传输时间)。BBR 之前,主流的 T...

  • 2021-12-19

    Trip.com: First Step towards Cloud Native Security

    TL; DRThis post shares our explorations on cloud native securities for Kubernetesas well as legacy workloads, with CiliumNetworkPolicy for L3/L4 accesscontrol as the first step. TL; DR 1 Introduction 1.1 Access control in Kubernetes 1.2 Implementation...

  • 2021-12-05

    [译] Facebook 流量路由最佳实践:从公网入口到内网业务的全路径 XDP/BPF 基础设施(LPC, 2021)

    译者序本文翻译自 Facebook 在 LPC 2021 大会上的一篇分享:From XDP to Socket: Routing of packets beyond XDP with BPF。标题可直译为《从 XDP 到 Socket 的(全路径)流量路由:XDP 不够,BPF 来凑》,因为 XDP 运行在网卡上,而且在边界和流量入口,再往后的路径(尤其是到了内核协议栈)它就管不到了,所以引入了其他一些 BPF 技术来“接力”这个路由过程。另外,这里的“路由”并非狭义的路由器三层路由,而是泛指 L3-L7 流量转发。翻译时加了...