张磊《深入剖析Kubernetes》专栏的阅读笔记

Tags: 系统设计 

目录

说明

张磊是《Docker容器与容器云》的作者,Kubernetes多个核心特性的作者之一。专栏详情可以直接扫码查看,有很详细的内容目录,可以试读。因为在阅读该专栏之前,已经对 Kubernetes 有较多的了解,这里只记录一些填补了盲区的新知识。

深入剖析Kubernetes极客时间专栏介绍

让top显示容器自己的状态 —— 06 | 白话容器基础(二):隔离与限制

在容器中用top命令看到的是宿主机的状态,要怎样做才能够在容器中看到容器的状态呢?

从评论中得知,可以用lxcfs实现。

top命令是从/proc/stats目录中读取数据的,因为容器中挂载的是宿主机的目录所以读到的是宿主机信息。 使用lxcfs之后,将lxcfs伪造的proc目录/var/lib/lxcfs/proc/*挂载到容器中,使top等命令从lxcfs中读取数据。

注: 还没有尝试 @2018-09-20 23:20:02

容器的根文件系统的形成方式与修改原理 —— 07 | 白话容器基础(三):深入理解容器镜像

这一章的大部分内容对我来说比较容易,很早之前就了解过容器的原理:一个最简容器的实现。 但是镜像部分没有深入了解,后半部对Docker如何应用aufs的讲解,对我很有用。

image inspect命令可以查看镜像的分层:

$ docker image inspect ubuntu:latest
...      
"RootFS": {      
	"Type":"layers",
	"Layers": [        
		"sha256:f49017d4d5ce9c0f544c...",        
		"sha256:8f2b771487e9d6354080...",        
		"sha256:ccd4d61916aaa2159429...",        
		"sha256:c01d74f99de40e097c73...",        
		"sha256:268a067217b5fe78e000..."
	]
}

使用AUFS的方式,挂载点在/var/lib/docker/aufs/mnt/,里面是一个完整的rootfs:

/var/lib/docker/aufs/mnt/6e3be5d2ecccae7cc0fcfa2a2f5c89dc21ee30e166be823ceaeba15dce645b3e

关键是镜像的多个分层是怎样“捏合”成这个挂载点的,可以在/proc/mounts中找到这个挂载目录的详细信息:

$ cat /proc/mounts| grep  "6e3be5d2ecccae7cc0":w
none /var/lib/docker/aufs/mnt/6e3be5d2ecccae7cc0fc... aufs rw,relatime,si=972c6d361e6b32ba,dio,dirperm1 0 0

这里的si=972c6d361e6b32ba是找到镜像中另外多个分层挂载信息关键,在目录/sys/fs/aufs/中查找:

$ cat /sys/fs/aufs/si_972c6d361e6b32ba/br[0-9]*
/var/lib/docker/aufs/diff/6e3be5d2ecccae7cc...=rw
/var/lib/docker/aufs/diff/6e3be5d2ecccae7cc...-init=ro+wh
/var/lib/docker/aufs/diff/32e8e20064858c0f2...=ro+wh
/var/lib/docker/aufs/diff/2b8858809bce62e62...=ro+wh
/var/lib/docker/aufs/diff/20707dce8efc0d267...=ro+wh
/var/lib/docker/aufs/diff/72b0744e06247c7d0...=ro+wh
/var/lib/docker/aufs/diff/a524a729adadedb90...=ro+wh

后五个只读层和第一个读写层好理解,详情可以去看专栏。有意思的第二个init=ro+wh层。

init层是Docker项目生成的,专门用来存放/etc/hosts、/etc/resolve.conf等信息的层。这些信息需要是可修改的,但不能被提交到镜像中。

Docker单独设计了可修改的init层,docker commit提交镜像的时候,init层会被忽略,不被包含在镜像中。

如果在读写层中修改下面的只读层中的文件,会使用copy-on-write的方法,将文件从只读层复制到读写层后,在读写层修改,从上面看起来就覆盖了下面的同名文件。

如果要在读写层中删除下面的只读层中的文件,则是在只读层里创建一个.文件名的whiteout(ro+wh中的wh)文件,挡住下面的只读层中的文件。

aufs文件系统的知识有必要了解一下,还有devicemapper、btrfs、overlayfs、vfs、zfs等。

这一章给出了一个技能图谱,很实用:

Kubernetes技能图谱

为什么需要Kubernetes,与Borg的关系 —— 09 | 从容器到容器云:谈谈Kubernetes的本质

之前阅读Borg论文的时候做过笔记:Borg论文阅读笔记

这里提到的Google Stack很赞!

Google Stack

kubelet通过gRPC 协议同一个叫作 Device Plugin 的插件进行交互。这个插件,是 Kubernetes 项目用来管理 GPU 等宿主机物理设备的主要组件,也是基于 Kubernetes 项目进行机器学习训练、高性能作业支持等工作必须关注的功能。

怎样部署Kubernetes —— 10 | Kubernetes一键部署利器:kubeadm

主要介绍了kubeadm的用法,kubeadm用起来很简单,但还不能用于生产!

推荐使用kops或者 SaltStack 这样更复杂的部署工具。

以前写过一套Ansible部署脚本kubefromscratch-ansible

参考

  1. 一个最简容器的实现
  2. Borg论文阅读笔记
  3. Google Stack
  4. 《左耳听风》陈皓专栏的阅读笔记(持续更新)

系统设计

  1. Netflix 的异地多活设计: Active-Active for Multi-Regional Resiliency
  2. Facebook 的缓存系统实践经验《Scaling Memcache at Facebook》
  3. 多机数据系统的正确性与一致性
  4. 《大型网站技术架构: 核心原理与案例分析》阅读摘录
  5. 《分布式金融架构课》阅读笔记2: 线性一致的分布式数据系统的实现过程
  6. 《分布式金融架构课》阅读笔记1: 单机&多机并发/多副本读写正确性和一致性
  7. 《消息队列高手课》阅读笔记: Rabbit/Rocket/Kafka/模型/消息事务/保序等
  8. 《消息队列高手课》阅读笔记: Rabbit/Rocket/Kafka/模型/消息事务/保序等
  9. 《Redis核心技术与实践》阅读笔记: 数据类型/存储开销/Rehash/案例等
  10. 《Redis核心技术与实践》阅读笔记: 数据类型/存储开销/Rehash/案例等
  11. 《高并发系统设计40问》阅读笔记: 数据库/缓存/消息队列/分布式服务
  12. 《高并发系统设计40问》阅读笔记: 数据库/缓存/消息队列/分布式服务
  13. 《MySQL实战45讲》阅读笔记: 索引类型/数据可靠性/事务/间隙锁/临时表等
  14. 系统性能分析方法论: 统计图谱工具
  15. 张磊《深入剖析Kubernetes》专栏的阅读笔记
  16. 代理服务软件haproxy、nginx、envoy对比,以及开源的API网关项目对比
  17. 蓝绿部署、金丝雀发布(灰度发布)、A/B测试的准确定义
  18. 阿里巴巴的应用限流和服务降级是怎样实现的?|如何打造平台稳定能力
  19. 陈皓《左耳听风》专栏的阅读笔记(持续更新)
  20. 好雨云帮,一款不错的国产开源PaaS
  21. 怎样为软件的不同版本命名?
  22. 怎样选择开源项目的license?
  23. Glusterfs的架构
  24. 怎样设计一个企业级的PaaS平台?
  25. 几种常见的LDAP系统
  26. DNS SRV介绍(一种用DNS做服务发现的方法)
  27. DNS,DNS-Domain Name System
  28. 思科的网络设备
  29. 虚拟化技术汇总
  30. 认证与授权系统的汇总
  31. 高可用实现方法汇总
  32. 编译器汇总
  33. Linux系统的优化方法
  34. CentOS7的一些变化
  35. 分布式系统的一些知识
  36. 计算机编程语言的特性汇总
  37. 网络通信的一些基础知识
  38. PCIE总线的一些知识
  39. 操作系统的API
  40. 网卡的一些知识
  41. Linux系统的构建过程
  42. 数据结构与算法
  43. CPU的相关知识

推荐阅读

Copyright @2011-2019 All rights reserved. 转载请添加原文连接,合作请加微信lijiaocn或者发送邮件: [email protected],备注网站合作

友情链接:  系统软件  程序语言  运营经验  水库文集  网络课程  微信网文  发现知识星球