博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
云计算之k8s系列_第一回
阅读量:3517 次
发布时间:2019-05-20

本文共 2036 字,大约阅读时间需要 6 分钟。

云计算之k8s系列

如何快速使用Markdown:

  • 加粗 (Ctrl+B) 和 斜体 (Ctrl+I)
  • 引用 (Ctrl+Q)
  • 代码块 (Ctrl+K)
  • 标题 1, 2, 3 (Ctrl+1Ctrl+2Ctrl+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/cpucpu.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又是做什么的呢?轻听下回讲解

转载地址:http://jvcqj.baihongyu.com/

你可能感兴趣的文章
【STM32CubeMX+FreeRTOS 】29,prtinf卡死;4任务只运行了3个;W5500联网失败(堆栈不能太大或者太小)
查看>>
【STM32+FreeRTOS +W5500移植要点】30,RTOS中断;从TIM2,主TIM3;RTOS主要用在LCD中;RT-Thread;标志重定义问题 2019年01月22日
查看>>
【STM32+FPGA+FSMC】31,FSMC熟练掌握;KEIL5生成bin文件;SDRAM的使用;IAP检验码 2019年04月10日
查看>>
【IC1】【转 非常好】运算放大器使用的六个经验
查看>>
【IC-ADC 3】ADC的选型
查看>>
2019年03月18日 查看数据手册的注意点,极限参数、电气参数、推荐参数
查看>>
HiKey960/970用户手册;HiKey960 Development Board User Manual
查看>>
【IC8】作为一名硬件工程师,需要哪些知识?
查看>>
【书籍推荐】FPGA,xilinx
查看>>
N9-SQL注入(union注入)
查看>>
N10-sql注入(information_schema注入)
查看>>
N1-Kali虚拟机中SQLmap
查看>>
N11-sql注入(http头注入)
查看>>
N2-sqlmap初使用
查看>>
N12-sql盲注原理以及boolean盲注案例实现
查看>>
N13-sqli盲注 基于时间型
查看>>
N1 技术心得 2019-6-26
查看>>
N1-环境配置
查看>>
N2-审计方法与步骤
查看>>
N3-常见的INI配置
查看>>