云计算之k8s系列

    xiaoxiao2021-04-15  249

    云计算之k8s系列

    如何快速使用Markdown:

    加粗 (Ctrl+B) 和 斜体 (Ctrl+I)引用 (Ctrl+Q)代码块 (Ctrl+K)标题 1, 2, 3 (Ctrl+1, Ctrl+2, Ctrl+3)列表 (Ctrl+U 和 Ctrl+Shift+O)

    K8s 是目前容器编排应用最活跃的,用的公司也越来越多,接下来我将从最初的docker容器到k8s集群应用,整理出来供大家参考!

    docker 应用管理

    docker镜像:解决打包的根本性问题,是一个完整操作系统的所有文件和目录,我们可以封装镜像,并使用镜像运行容器,解决了开发环境与用户环境统一的问题。

    docker build "image name" docker run "image name"

    docker容器编排

    swarm是docker提出的,最大的优点是和docker容器无缝拼接,适合小型docker编排fig之前是由两个人维护的,后期被docker公司收购,改名成compose,称为docker公司第二大亮点,到现在还很受欢迎mesosphere是mesos提出的,最大亮点是经过了万级集群验证,适合大规模容器编排CNCF基金会打造kubernetes

    docker——进程namespace

    进程:一个程序运行起来后的计算机执行环境的总和。

    容器核心功能:通过约束和修改进程的动态表现,从而为其创造出一个“边界”

    创建一个容器

    docker run -it busybox /bin/sh / # ps

    在容器中执行ps可以发现/bin/sh的进程号被划分为1,但是在宿主机上,这个容器的pid可能是100,使用namespace机制对进程进行隔离

    namespace隔离内容: - pid - mount - uts - ipc - network - user

    实际上是创建容器进程时,制定了这个进程所需要启用的一组namespace参数,这样,容器就只能看到当前namespace所限定的资源、文件、设备、状态,或者配置。而至于宿主机以及其他不相关的程序,它就完全看不到了。所以,容器其实是一种特殊的进程而已

    docker——资源cgroups

    namespace缺点1: 因为容器只是运行在苏足迹上的一种特殊的进程,那么多个容器之间使用的就还是同一个宿主机的操作系统的内核。namespace缺点2: 在linux内核中,有很多资源和对象是不能被namespace化的,最典型的例子就是:时间。

    cgroups就是linux内核中用来为进程设置资源限制的一个重要功能。主要作用: 限制一个进程能够使用的资源上限,包括CPU、内存、磁盘、网络带宽等等。

    cgroups给用户暴露出来的操作接口是文件系统 , 它以文件和目录的方式组织在操作系统的/sys/fs/cgroup路径下。

    mount -t cgroup

    可以看到,在/sys/fs/cgroup下面有很多诸如cpuset、cpu、memory这样的子目录,也叫子系统。这些都是该机器当前可以被cgroups限制的资源种类。而在子系统对应的资源种类下,你就可以看到该资源具体可以被限制的方法。

    如cpu子系统

    ls /sys/fs/cgroup/cpu cpu.cfs_period_us cpu.cfs_quota_us tasks ...

    这前两个参数组合使用,可以用来限制进程在长度为cfsperiodus的一段时间内,只能被分配到总量为fsquotaus的CPU时间

    修改参数,限定进程使用CPU的比例

    ]# cd /sys/fs/cgroup/cpu/ ]# mkdir container ]# while : ; do : ; done & [1] 25739 ]# top cpu占用率 100% ]# cd container/ ]# echo 20000 > cpu.cfs_quota_us 指的是没100ms中cpu运行20ms ]# echo 25739 > tasks ]# top cpu占用率 20%

    cgroups的每一项子系统都有其独有的资源限制能力。

    对于docker等linux容器项目来说,他们只需要在每个子系统下面,为每个容器创建一个控制组(即创建一个新目录),然后在启动容器进程之后,把这个进程的pid填写到对应的控制组的tasks文件中就可以了

    用户只需要在运行docker run命令时指定参数即可

    docker run -it --cpu-period=100000 --cpu-quota=20000 ubuntu /bin/bash

    容器就是一个“单进程”模型

    docker——文件系统

    未完待续。。。

    阶段总结

    namepace实现资源隔离cgroups实现资源限制rootfs又是做什么的呢?轻听下回讲解

    最新回复(0)