1-6 Namespace与CGroup

Namespace

Namespace(命名空间)是一种Linux操作系统层级的资源隔离技术,能够将 Linux 的全局资源,划分为不同的 namespace 资源,彼此的进程和资源是相互隔离。
命名空间作为内核技术为docker提供了资源隔离。namespace 对以下6种资源做隔离:

UTS namespace
提供了主机名隔离,这样每个容器就拥有独立的 hostname 和 domain 了。

PID namespace
完成的是进程ID的隔离,每个容器都有自己的进程环境,保证了容器的 init 进程是以 1 号进程来启动的。

IPC namespace
实现了进程间通信的隔离,只有同一个 Namespace 下的进程才能相互通信。

Mount namespace
通过隔离文件系统的挂载点来达到对文件系统的隔离。

Network namespace
实现了操作系统层面的网络资源隔离,包括网络设备接口、IP、路由表、Sockets 套接字等资源。

User namespace
主要隔离了用户与安全的标识符和属性,包括 User ID、Group ID、root 目录以及特殊权限。



CGroup

CGroup全称是control groups控制组,被整合在linux内核。cgroup可以控制、限制、隔离进程所需要的物理资源,包括cpu、内存、IO等。
控制组作为内核技术为docker提供了资源限制。cgroup的主要功能为以下4种:

资源限制(ResourceLimitation)
cgroups可以对进程组使用的资源总额进行限制。如设定应用运行时使用内存的上限,一旦超过这个配额就发出OOM(OutofMemory)。

优先级分配(Prioritization)
通过分配的CPU时间片数量及硬盘IO带宽大小,实际上就相当于控制了进程运行的优先级。

资源统计(Accounting)
cgroups可以统计系统的资源使用量,如CPU使用时长、内存用量等等,这个功能非常适用于计费。

进程控制(Control)
cgroups可以对进程组执行挂起、恢复等操作。



你可能感兴趣的:(云原生,linux,运维,docker,云原生)