当前位置: 首页 > article >正文

k8s,理解容器中namespace和cgroups的原理

一旦“程序”被执行起来,它就从磁盘上的二进制文件,变成了计算机内存中的数据、寄存器里的值、堆栈中的指令、被打开的文件,以及各种设备的状态信息的一个集合。像这样一个程序运行起来后的计算机执行环境的总和,就是我们今天的主角:进程。

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

对于Docker等大多数Linux容器来说,Cgroups技术是用来制造约束的主要手段,而Namespace技术则是用来修改进程视图的主要方法。

除了我们刚刚用到的PID Namespace,Linux操作系统还提供了Mount、UTS、IPC、Network和User这些Namespace,用来对各种不同的进程上下文进行“障眼法”操作。
在这里插入图片描述
在这里插入图片描述

“敏捷”和“高性能”是容器相较于虚拟机最大的优势,也是它能够在PaaS这种更细粒度的资源管理平台上大行其道的重要原因。
在这里插入图片描述

不过,有利就有弊,基于Linux Namespace的隔离机制相比于虚拟化技术也有很多不足之处,其中最主要的问题就是:隔离得不彻底。
其次,在Linux内核中,有很多资源和对象是不能被Namespace化的,最典型的例子就是:时间。

在这里插入图片描述
在这里插入图片描述

众所周知,Linux下的/proc目录存储的是记录当前内核运行状态的一系列特殊文件,用户可以通过访问这些文件,查看系统以及当前正在运行的进程的信息,比如CPU使用情况、内存占用率等,这些文件也是top指令查看系统信息的主要数据来源。
但是,你如果在容器里执行top指令,就会发现,它显示的信息居然是宿主机的CPU和内存数据,而不是当前容器的数据。
造成这个问题的原因就是,/proc文件系统并不知道用户通过Cgroups给这个容器做了什么样的资源限制,即:/proc文件系统不了解Cgroups限制的存在。
k8s


http://www.kler.cn/a/441770.html

相关文章:

  • PHP语言的网络编程
  • 查看电脑或笔记本CPU的核心数方法及CPU详细信息
  • .NET 8 项目 Docker 方式部署到 Linux 系统详细操作步骤
  • 2025年PHP面试宝典,技术总结。
  • 审计文件标识作为水印打印在pdf页面边角
  • 故障诊断 | BWO白鲸算法优化KELM故障诊断(Matlab)
  • Android Scratch分区
  • 力扣hot100——哈希
  • ESP8266 Ubuntu 安装
  • vue2 项目webpack 4升5
  • docker xxxx is using its referenced image ea06665f255d
  • 使用echarts实现3d柱状图+折线图
  • Vue3 重置ref或者reactive属性值
  • JAVA企业级项目的日志记录技术
  • 《变形金刚:赛博坦的陨落》游戏启动难题:‘buddha.dll’缺失的七大修复策略
  • 搭建C#开发环境
  • Qt6开发自签名证书的https代理服务器
  • 【Unity/HFSM】使用UnityHFSM实现输入缓冲(预输入)和打断机制
  • Redis API(springboot整合,已封装)
  • Mac上使用ln指令创建软链接、硬链接
  • 模拟法简介(蓝桥杯)
  • Sql注入(靶场)14-20关
  • 力扣.——560. 和为 K 的子数组
  • 关于SQL注入的面试题及经验分享
  • 测试框架 —— Playwright Fixture夹具有效利用的建议指南!
  • Springboot和vue前后端交互实现验证码登录