Hello, World!

~ Enjoy Today ~

Linux 内核轻量级调试小技巧
Kernel 内核承担了核心的操作系统工作,是当今软件生态的基石,因此了解内核是如何工作的能极大的帮助我们更好地构建用户态系统。 学习软件源代码最好的方式就是边看边 DEBUG,软件 = 代码 + 数据,看代码的同时了解其运行时数据能让我们更好的理解整体逻辑。 但内核毕竟不是普通的软件系统,并不是简单的在 IDE 里面一点就能断点调试的,虽然也可以通过 kgdb + qemu 实现在 IDE 中的断点调式,不过这样实在是太重了,而且也不能分析正在运行中的线上......
Cilium 容器数据路径
Cilium Cilium 提供了一套基于 eBPF 的容器网络方案,在网络可观测性和隔离策略方面提供了非常多强大的特性。 我们今天主要关注 Cilium 容器数据面路径这个话题,即一个使用 Cilium 做为 CNI 的 Pod 的数据是如何流动的。 这里我们以在 Pod 中向 1.1.1.1:80发起 TCP 连接(nc -v 1.1.1.1 80)的流量为例进行分析,演示的 Cilium 集群使用 veth pair 打通容器和宿主机网络命名空间,同时使用 vxlan 模式来进行跨主机间的 Pod 通信。 这里我们使用 Pod 10.1.128.86 进行演示,其所在 Node IP 为 10.11.224......
Cilium 配置详解
Cilium Cilium 可以说是当下最流行的基于 eBPF 的容器网络方案,基于eBPF 这种内核黑魔法 Cilium 极大地提升了容器网络的可玩性。 Cilium 的参数配置项都是通过 ConfigMapcilium-config配置的 中,,下面我们来一个个的分析一下这个 ConfigMap 里面的参数都有何意义。 本文基于cilium 1.11版本进行分析。 Cilium Config 配置项 意义 kvstore 当使用 KV 数据库存储元信息而不是CRD时,需要设置此项申明具体的KV存储,原来支持 etcd 和 consul 两种选择,不过 1.11 版......
镜像仓库Harbor Pull实现原理
Harbor简介 Harbor 是 VMWare 开源的一个镜像仓库平台,镜像分发和存储逻辑是基于 docker 开源的 registry (后更名为 distribution)实现的,Harbor 主要在其之上扩展了权限管理、镜像扫描、可视化管理后台等平台化功能,和大部分的云原生组件一样,Harbor 也是基于 Go 语言开发的。 Harbor 的系统架构如下图所示,箭头所指方向为数据流向: 一个镜像仓库最核心的功能就是推送和拉取,本文主要讨论 Harbor 镜像拉取具体的实现细节。 在开始之前 我......
CentOS Linux内核升级指南
内核 一个 Linux 操作系统,或者叫做 Linux 发行版,比如常见的:CentOS、Debian、Unbuntu 等等,都是由如下五部分构成的,如下图所示,Linux发行版在外层封装了了大量的库、包和工具供用户使用,而底层硬件设备控制相关的能力则仍是由内核提供: 为什么要升级版本 内核也是一个软件, 软件在不断的迭代的过程中会开发很多新的特性,当我们不论是主动还是被动的对内核的新特性有需求而当前版本不支持时,我们就需要升级版......
Fluent Bit介绍
Fluent Bit Fluent Bit 是一款开源的日志收集组件,资源开销非常小,小到甚至能在嵌入式系统上运行,支持日志解析&过滤&转发,同时作为云原生基金会下的一个子项目,天然支持容器和 k8s 场景。 基本概念 大部分日志收集组件都将系统大致分为输入、缓冲区、输出三大部分,输入部分负责采集日志,采集了之后放在缓冲区,然后输出部分将其再转发到其他系统。 Fluent Bit 将这三大部分细分成了:输入、解析、过滤、缓冲区、路由、输出六个部分:......
手动实现一个Linux容器
容器 容器技术的出现,彻底颠覆了传统的应用交付部署方式,交付的边界不再仅限于代码,而是一整套能 run everywhere 的基础设施,正如容器化领域的集大成者 Docker 的标语所言,这是一个新的时代了: Accelerate how you build, share and run modern applications. 容器本质上就是一个软件包,包含了业务服务及其依赖组件,比如我有一个Java服务,依赖了jdk 14.0.1以及几个外部 jar包,同时我们还依赖发行版的一些特性,需要运行在 debian buster发行版上,那么我们可以把这些通通打......