可以将Pod视为命名空间吗?

时间:2018-12-18 12:09:15

标签: kubernetes

我的理解是,由于pod被定义为一组容器,这些容器在这些容器之间提供共享的资源(如存储和网络),可以将其视为工作节点中的命名空间,也就是说,不同的pod代表不同的容器工作者节点机器中的命名空间?

否则,pod实际上是一个进程,该进程首先由部署启动(或运行或执行),然后启动其中的容器吗? 我可以通过ps命令看到它吗? (我确实尝试过,只有docker容器正在运行,所以我排除了pod是一个进程)

2 个答案:

答案 0 :(得分:5)

如果我们从基础入手

什么是命名空间(以通用方式)?

  

名称空间是一个声明性区域,它为其内部的标识符(类型,函数,变量等的名称)提供范围。命名空间用于将代码组织到逻辑组中,并防止发生名称冲突,尤其是当您的代码库包含多个库时。

什么是Pod(在K8s中)?

  

吊舱是一组一个或多个容器(例如Docker容器),具有共享的存储/网络,以及有关如何运行容器的规范。广告连播的内容始终位于同一地点,并在同一时间安排,并在共享上下文中运行。 Pod为特定于应用程序的“逻辑主机”建模-它包含一个或多个相对紧密耦合的应用程序容器-在容器之前的世界中,在同一物理或虚拟机上执行将意味着在同一逻辑主机上执行

     

尽管Kubernetes不仅支持Docker,而且还支持更多的容器运行时,但是Docker是最常见的运行时,它有助于以Docker术语描述pod。

     

pod的共享上下文是一组 Linux命名空间,cgroup和潜在的其他隔离方面-隔离Docker容器也是如此。在Pod的上下文中,各个应用程序可能会应用进一步的子隔离。   Some deep dive into Pods

什么是命名空间(用k8s表示)?

  

命名空间旨在用于具有多个用户的环境,这些用户分布在多个团队或项目中。

     

命名空间为名称提供了作用域。资源名称必须在名称空间内唯一,但在名称空间之间不唯一。

     

命名空间是一种在多个用户之间划分群集资源的方法。

所以我认为只需说:

是的,豆荚有一个命名空间

  

荚类型代表命名空间,但在容器级别(它们在一组容器之间共享相同的网络,卷/存储上下文)

     

但是名称空间(就K8而言)是更高的隔离级别-在集群级别上,由所有容器(服务,部署,dns名称,IP,配置映射,机密,角色等)共享

您还应该看到这个link

希望这可以解决这个问题。

答案 1 :(得分:1)

是的,您可以说pod是容器共享的名称空间。使用Docker执行器时,将创建一个pause容器,该容器将建立网络,文件系统和进程名称空间,以供后续容器使用。

这是因为Docker不将Pod理解为一流的原语,并且不会在其他运行时看到pause容器。