docker - Kubernetes 和 Docker 的关系
问题描述
Docker 和 Kubernetes 的关系本质是什么?假设在 Pod 内完成的所有 Docker 操作都会将 Pod 视为普通主机,是否安全?
例如,如果我要使用 Python Docker SDK,附加到/var/run/docker.sock
并创建一个卷,这个卷是否只存在于 Pod 中?
我主要担心的是我知道 Pod 是虚拟化的,因此如果我通过 Docker 等其他虚拟化工具挖掘得太深,可能无法很好地发挥作用。
解决方案
了解每个概念的职责是什么很重要。
- Docker 容器本质上是主机操作系统和来宾操作系统之间的边界,它允许进程独立运行(文档)。
- Kubernetes是一个用于运行此类容器的编排平台(文档)。
- 最后,Pod是一个 kubernetes 对象,它描述了如何运行 docker 容器(文档)。
有了这些知识,我们可以回答您的一些问题;
Docker 和 Kubernetes 的关系本质是什么?
Kubernetes可以像您的计算机一样运行 docker 容器,但它针对这个特定目标进行了优化。Kubernetes 也是一个抽象(或编排)层,为您处理网络能力、磁盘空间和 cpu 周期等资源。
假设在 Pod 内完成的所有 Docker 操作都会将 Pod 视为普通主机,是否安全?
Pod无论如何都不是主机。它只是对 docker 容器(或多个)应该如何运行的描述。任何生成的容器都在 Kubernetes 节点创建的虚拟空间中运行。
例如,如果我使用 Python Docker SDK,附加到 /var/run/docker.sock,并创建一个卷,这个卷是否只存在于 Pod 中?
这是您可以在本地计算机上执行的操作,虽然从技术上讲您也可以在您的节点上执行此操作,但这不是一个常见的用例。
请注意,docker 容器与任何外部因素(例如挂载或网络套接字)隔离(仅在运行时发生,并且不会更改容器本身的状态)。但是,您可以配置容器(使用 Pod 对象)以在集群上重新创建相同的条件。
推荐阅读
- mongodb - MongoDB 中的复合分片键的工作方式类似于复合索引吗?
- excel - 动态运行存储在单元格中的宏
- spring-boot - 仅使用 https 的 Spring Boot - 测试失败
- flutter - 为什么 GetIt 库需要在后台应用程序时重新初始化(未终止)?
- javascript - 使用 Formik Form 检测 Input Chakra UI 元素的“删除”键 onKeyPress
- kubernetes - 使用外部 yaml 文件为 kubernetes 创建 configmap
- python - 如何将二进制格式的.mat文件转换为python字典?
- pyspark - TypeError:StructType 不能接受类型中的对象“”
pyspark 模式 - c# - 在这种情况下,是否有一种优雅的方式来使用工作单元?
- localdate - 黑森州本地日期