深入剖析kubernetes系列之一

前言

从即日起开写本系列,此系列是依据极客时间《深入剖析kubernetes》专栏整理的笔记,本系列会持续更新。

第一篇 容器技术基础之进程

  • 进程可以看作是一个程序运行起来后的计算机执行环境的总和。

  • cgroup技术是用来制造约束的主要手段,用于限制资源。

  • namespace是用来修改进程视图的主要方法,用于实现对应资源等的隔离。

  • 容器docker里面最开始运行的进程,是PID=1的进程,这个1号进程只是容器中虚拟出来的,在宿主机系统进程中的pid不是1,例如为100,这是被pid namespace机制做了隔离的结果,,使得容器内进程的pid被施了障眼法,看不到前面的99个进程,而自己就是pid=1。

  • Linux系统提供的namespace有:mount,uts,ipc,network,user,pid

  • docker实际上是在创建容器进程时,指定了一组namespace参数,容器只能看到当前namespace所限定的资源等,容器其实是一种特殊的进程

  • 容器是单进程的,容器镜像里面集成了jdk,netstat,ping等,容器启动时里面java进程在运行,但在容器里面执行ping命令时,此时ping命令是不受docker控制的,所以单进程不是只能运行一个进程,而是只有一个进程是可控的,这里的可控是指exec进去之后启动的进程,不受控制,控制指它们的回收和生命周期管理,pod中的prestop,poststart是pid=1的进程的子进程,不能把pod的hook写成后台进程,因为容器中只有pid=1的进程是容器可控的。

  • 镜像只是提供了一套镜像文件系统中的各种文件,而各种内核相关的模块或者特性支持,完全依赖于宿主机

  • 虚拟机与容器的区别: 虚拟机是硬件级别(虚拟硬件)的隔离,而容器是进程的隔离

  • 通过查看/proc/1/cgroup下的文件结构,可以判断目前是在容器里面还是在宿主机里

  • 监控容器内jvm使用情况,可以使用一个sidecar容器来监控主容器内tomcat的jmx,并将其数据转换成prometheus拉取的格式


文章作者: BY 木易杨
版权声明: 本博客所有文章除特別声明外,均采用 CC BY 4.0 许可协议。转载请注明来源 BY 木易杨 !
评论
 上一篇
redis系列 redis系列
redis的持久化 redis是一个内存数据库,就是将数据内容存储在内存中,这与传统关系型数据库直接将数据保存到硬盘中相比,数据读取速度要比传统数据库快很多。但保存在内存中有个缺点,就是一旦系统宕机或者重启,那么内存中的数据就会全部丢失。r
2019-10-10 BY 木易杨
下一篇 
使用开源软件的正确姿势 使用开源软件的正确姿势
使用开源软件的正确姿势一、选择开源软件的考量点: 是否满足业务 是否成熟 可以从以下几个方面考察是否成熟: 版本号:一般建议除非特殊情况,否则不要选0.X版本的,至少选1.X版本的,版本号越高越好。 使用的公司数量:一般开源项目都会把采用了
2019-06-27 BY 木易杨