Skip to the content.

k8s入门-基础概念

31 May 2023 - joy717

k8s相关概念


个人理解,难免有不对的地方。


实际上,关于容器、容器运行时环境,并没有一个准确的“官方”定义。

容器(container)

---2021.8更新---

是一个特殊的进程/线程,有隔离/限制/独立文件系统等功能。

---old-----

操作系统(linux)提供了 namespacescgroups功能,使用这些功能,创建出一个相对独立的,类似虚拟机的环境。使用了这样技术的,即可称为容器。实际上,docker container的核心功能,也是基于此。 (namespaces可隔离的cpu、内存、网络等,而cgroups则可限制cpu、内存等的使用量) 与虚拟机不同的是,容器是跑在操作系统内核之上的一个进程

容器运行时环境(container runtime)

container runtime,为container运行而提供的一个环境。这个环境提供了,容器所需要的基础功能。比如创建namespaces、cgroups,并且在这个环境里执行命令等功能。在此基础上,不同团队实现了不同的功能集合,也由此有了很多不同的container runtime。比如有些runtime扩展的功能包含:

  1. image相关功能,管理、分享image等;
  2. 提供API给上层调用。
  3. ...

由此,也产生了两大类runtime。一部分runtime只提供容器运行,所需要的一些底层的、基础的环境(功能)。姑且称之为底层runtime。而一部分runtime,既提供了基础的功能,又提供了很多丰富的功能,这类runtime,姑且称之为上层runtime

而部分上层runtime,在基础功能部分,不一定是自己实现,而是直接使用了其他的底层runtime,也就是在底层runtime,外面又包了一层,提供了更加丰富的功能。比较典型的例子:(Docker) containerd,是一个上层runtime,但是底层功能(与namespaces、cgroups等操作)却使用了runc这么一个底层的runtime。这样做的好处是,其中一个是可以解耦。也更“微服务化”。

以上参考:

参考1 系列

参考2