![](https://img-blog.csdnimg.cn/direct/c3d9060513c2445aa613e30735a36715.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
容器系列
文章平均质量分 92
了解容器不仅仅要会操作,还要看透事务的本质,追本溯源,看透容器究竟是用哪些底层技术构建的。并且我希望通过这个专栏,能对容器二次开发,容器线上问题排查有所了解。
蓝胖子的编程梦
多年互联网大厂开发经验,深耕后端领域,擅长golang、云原生技术栈。对性能优化和服务监控方向颇有心得,对分布式链路追踪,故障诊断,实时数据分析,监控告警平台建设,性能优化及架构设计有深入研究
展开
-
【容器系列】500行代码手写docker-实现硬件资源限制cgroups
cgroups技术是内核提供的功能,可以通过虚拟文件系统接口对其进行访问和更改。mount 命令可以查看cgroups在虚拟文件系统下的挂载目录。一般默认的挂载目录是在/sys/fs/cgroup 目录下,系统内核在开机时,会默认挂载cgroup目录。这样便能通过访问文件的方式对cgroup功能进行使用。在/sys/fs/cgroup/ 目录下,我们看到的每个目录例如cpu,blkio被称作subsystem子系统,每个子系统下可以设置各自要管理的进程id。拿cpu这个目录下的文件举例。原创 2023-05-23 18:20:43 · 95 阅读 · 0 评论 -
容器镜像原理- 联合文件系统实践
联合文件系统可以把其他文件系统的文件和目录挂载到同一个挂载点下,形成统一的文件系统,在挂载点下形成统一的文件视图。而当对联合文件系统进行写操作时,其实是写到了新文件上,并没有去修改原文件,在linux上,原生自带了一种联合文件系统类型overlay,接下来用overlay来感受下挂载一个联合文件系统的过程。原创 2023-03-15 13:08:56 · 141 阅读 · 0 评论 -
k8s容器互联-flannel vxlan 原理篇
flannel 在为不同主机的pod分配ip地址的时候,会在一个大的网段范围内分配ip地址,而同一台主机上的pod,则是在大的网段下延伸出一个较小的子网,同一台主机上的ip地址则是在较小的子网范围内去进行分配。例如k8s启动flannel插件时,会通过flannel的配置文件指定大的网段的范围和flannel启动方式,我们选用的是vxlan模式这样整个集群的ip地址就是在10.10.0.0/16 网段去进行分配。原创 2023-03-15 13:01:23 · 543 阅读 · 0 评论 -
容器镜像原理-根目录的替换
之前提到,容器的文件系统本质上是在镜像文件的基础上加上一个读写层文件夹构成的联合文件系统。而为了容器只能看到指定挂载目录内的范围,可将进程的文件系统根节点目录指定为特定的挂载目录。由于进程寻找文件总是从其根目录节点开始的,所以改变了进程根节点目录后,进程所能看见的文件视图便发生了变化。原创 2023-03-15 13:05:52 · 448 阅读 · 0 评论 -
k8s 实现自定义控制器-原理篇
文章最开头实现的控制器虽然也能实现控制器功能,但并不是官方推荐的编程模式,现在来看下官方推荐的自定义控制器的编程模式。在之前直接写informer.AddEventHandler不同,这里引入了一个工作队列,EventHandler里的逻辑就是把收到的消息发送到工作队列中,然后有一段代码不断从工作队列中消费消息,而这段代码就被称作control loop 控制循环。client 包提供了现成的工作队列。原创 2023-03-15 13:11:13 · 772 阅读 · 0 评论 -
iptables的使用
在看iptables使用规则前,得先明白这5个钩子函数的触发规则。原创 2023-03-15 13:12:18 · 172 阅读 · 0 评论 -
k8s容器互联-flannel host-gw原理篇
前面分析了flannel vxlan模式进行容器跨主机通信的原理,但是vxlan模式需要对数据包进行额外的封包解包处理,带来的开销较大。所以flannel提供了另外一种纯3层转发的通信模式,叫做host-gw,顾明思议,这种模式是将主机作为网关在用了。先来看下网关在ip通信中的作用,例如,一个tcp包有源ip和目的ip,如果目的ip匹配不到路由信息,那么就会将包转发到网关,在一个发往目的ip的过程中,可能会经过多个网关。原创 2023-03-15 13:00:22 · 307 阅读 · 0 评论