Kubernetes and Docker Relationship



Docker和Kubernetes之间的关系本质是什么?假设在Pod中完成的所有Docker操作都会将Pod视为一台正常的主机,这是否安全?

例如,如果我使用Python Docker SDK,连接到/var/run/docker.sock,并创建一个卷,这个卷会只存在于Pod中吗?

我主要担心的是,我知道Pod是虚拟化的,因此如果我通过Docker等其他虚拟化工具挖掘得有点太深,可能不会很好地发挥作用。

了解每个概念的责任是什么很重要。

  • Docker容器本质上是主机操作系统和客户操作系统之间的边界,允许进程在隔离状态下运行(docs(
  • Kubernetes是一个用于运行此类容器(文档(的编排平台
  • 最后,Pod是一个kubernetes对象,它描述了如何运行docker容器(docs(

有了这些知识,我们可以回答您的一些问题;

Docker和Kubernetes之间的关系本质是什么?

Kubernetes可以像您的计算机一样运行docker容器,但它已针对这一特定目标进行了优化。Kubernetes也是一个抽象(或编排(层,为您处理网络能力、磁盘空间和cpu周期等资源。

假设在Pod内完成的所有Docker操作都会将Pod视为普通主机,这样安全吗?

Pod在任何方面都不是主机。这只是一个docker容器(或多个(应该如何运行的描述。任何产生的容器都在kubernetes节点创建的虚拟空间中运行。

例如,如果我使用Python Docker SDK,连接到/var/run/doker.sock,并创建一个卷,这个卷会只存在于Pod中吗?

这是您可以在本地机器上执行的操作,虽然从技术上讲,您也可以在Node上执行,但这不是常见的用例。

请注意,docker容器与任何外部因素(如装载或网络套接字(隔离(这些因素只在运行时发生,不会改变容器本身的状态(。但是,您可以配置一个容器(使用Pod对象(来在集群上重新创建相同的条件。

如果Kubernetes正在运行Docker(不能保证(,那么/var/run/docker.sock将是主机的Docker套接字;没有额外的虚拟化层。

您不应该试图在Kubernetes中运行的应用程序中使用Docker原语。您所描述的方法可能会导致数据丢失,即使您试图在节点上创建Docker本机卷,但随后群集自动缩放器或其他任务会破坏节点。如果您需要创建存储或其他容器,可以使用Kubernetes API创建PersistentVolumeClaims、Jobs和其他Kubernetes-managed对象。

相关内容

  • 没有找到相关文章

最新更新