Kubernetes 入门到进阶实战-01课程导学, 03Kubernetes之Docker必知必会
作者:互联网
课程介绍与学习指南
- 无人指引kubernets入门,环境搭建困难
- kubernetes安装复杂,概念多,看了就忘,缺乏实战环节
- 生产环境需要应用配置分离,网络配置,配额管理,应用监控
- 框架图
Kubernetes之Docker必知必会
为什么需要Docker
docker启动秒级,硬盘占用MB,性能接近原生,单机支持上千个容器。
docker有这样的性能就是为了云原生的部署,docker+kubernetes发展如此之快就是为了云原生大规模的容器化部署。
Docker namespace隔离
- docker通过namespace实现进程间的隔离
- namespace隔离的类型
- UTS Namespace隔离:提供了主机名与域名的隔离,这样每个docker容器就可以拥有独立的主机名和域名了,在网络上被视为一个独立的节点,而非宿主机上的一个进程
- IPC Namespace隔离:进程间通信涉及的IPC资源包括常见的信号量、消息队列、共享内存;在同一个IPC namespace下的进程彼此可见,在不同IPC namespace下的进程批次不可见
- PID Namespace隔离:pid namespace隔离非常实用,它对进程pid重新标号,在不同的name space下可以有相同的pid
- unshare命令的使用
unshare --fork --pid --mount-proc bash
ps aux
通过该命令我们进入了一个新的进程空间,该进程空间中只有两个进程。
CGroups实现资源配额
- docker使用cgroups实现资源的配额管理
- cgroups限制进程的cpu使用时间,docker中的cpu、内存、网络的限制均通过cgroups来实现
- 在linux创建一个让CPU飙升到100%的进程
while :; do :; done&
3.1 查看进程ip
htop
结果是25717, 记住留着在下面通过cgroups设置资源上限限制的时候使用 - 进入linux的cgroups查看(因为Linux一切皆文件的特性)
cd /sys/fs/cgroup/cpu // 进入cpu目录
sudo mkdir cgroups_test // 随便创建一个目录
cd cgroups_test
cat cpu.cfs_quota_us // 结果显示-1, -1的意思就是不做任何的限制
cat tasks // 结果为空,也就是说当前配额没有和linux操作系统中的任何进程关联,所有配额没有任何意义,不生效
su root // 切换到root用户
echo 20000 > cpu.cfs_quota_us // 设置配额上限,cpu的使用时长不超过20ms(20000um),也就是20%的CPU时间
echo 25717 > tasks // 设置当前进程为20%的CPU时间
- 查看docker是不是用的cgroups技术
sudo docker container run --rm -it --cpus=".5" nginx:stable sh // 创建并运行容器
cd /sys/fs/cgroup/cpu // 切换到cpu目录下
cat cpu.cfs_quota_us // 查看cpu限额,结果显示50000us,也就是我们刚刚启动容器时设置的--cpus=".5", 这就是当前进程CPU的配额
Docker镜像特性与原理
- docker镜像的由来
虽然docker实现了运行环境的隔离,但是如何讲一个容器快速的进行启动、复制、迁移到其它主机上运行?
如果容器无法进行快速的复制、迁移,那么和以vmware为代表的虚拟化技术没有太多优势 - docker镜像的特性
- docker镜像具备了应用运行所需要的所有依赖
- 一次构建,处处运行
- docker镜像的存储是基于checksum的去重存储,大大降低存储空间
- docker镜像是如何存储的
- docker镜像是分层存储的
- docker镜像是增量存储的,如何看增量存储呢,需要到/var/lib/docker/overlay2/xxxxxxxxx/diff增量的区别
标签:01,cgroups,隔离,Kubernetes,03Kubernetes,进程,镜像,docker,cpu 来源: https://www.cnblogs.com/mayanan/p/16341866.html