编程技术网

关注微信公众号,定时推送前沿、专业、深度的编程技术资料。

 找回密码
 立即注册

QQ登录

只需一步,快速开始

极客时间

k8s 什么是 Pod?

李轼 云计算 2021-12-3 21:08 168人围观

腾讯云服务器
Pod 是 Kubernetes 中最简单的计算资源。它指定由 Kubernetes 调度程序在节点上启动和运行的一个或多个容器。Pod 有许多潜在的配置和扩展,但仍然是在 Kubernetes 上运行应用程序的最基本方式。

重要的提示

Pod 本身并不是在 Kubernetes 上运行应用程序的好方法。Pod 应该被视为可丢弃的东西,以便利用像 Kubernetes 这样的容器编排器的真正功能。这意味着像对待牛一样对待容器(以及 Pod),而不是对待宠物。要真正利用容器和 Kubernetes,应用程序应该在自我修复、可扩展的组中运行。Pod 是这些组的构建块,我们将在后面的章节中介绍如何以这种方式配置应用程序。

实现 Pod
Pod 是使用 Linux 隔离原则实现的,例如组和命名空间,并且通常可以 被认为是一个逻辑主机。Pod 运行一个或多个容器(可以基于 Docker、CRI-O 或其他运行时),并且这些容器可以以与 VM 上的不同进程进行通信相同的方式相互通信。

为了让两个不同 Pod 中的容器进行通信,它们需要通过其 IP 访问另一个 Pod(和容器)。默认情况下,只有运行在同一个 Pod 上的容器才能使用较低级别的通信方法,但可以配置不同的 Pod,使其具有通过主机 IPC 相互通信的可用性。

Pod 范式
在 最基本的级别,有两种类型的 Pod:
Single-container Pods
Multi-container Pods

通常最佳做法是为每个 Pod 包含一个容器。这种方法允许您分别扩展应用程序的不同部分,并且在创建可以正常启动和运行的 Pod 时通常会保持简单。

另一方面,多容器 Pod 更复杂,但在各种情况下都很有用:

  • 如果您的应用程序的多个部分在单独的容器中运行但紧密耦合,您可以在同一个 Pod 中运行它们,以实现无缝通信和文件系统访问。
  • 在实现sidecar模式时,实用程序容器与主应用程序一起注入,以处理日志记录、指标、网络或高级功能

下列 图表显示了一个常见的 sidecar 实现:

图 3.1 – 常见的侧边栏实现

图 3.1 – 常见的侧边栏实现

在这个例子中,我们有一个带有两个容器的 Pod:我们的应用程序容器运行一个 web 服务器,一个日志应用程序从我们的服务器 Pod 中提取日志并将它们转发到我们的日志记录基础设施。这是 sidecar 模式的一个非常适用的用法,尽管许多日志收集器工作在节点级别,而不是 Pod 级别,因此这不是从 Kubernetes 中的应用程序容器收集日志的通用方式。

Pod 网络

正如我们刚刚 如前所述,Pod 有自己的 IP 地址,可用于 Pod 间通信。每个 Pod 都有一个 IP 地址和端口,如果有多个容器,则在一个 Pod 中运行的容器之间共享这些 IP 地址和端口。

在 Pod 中,正如我们之前提到的,容器可以在不调用包装 Pod 的 IP 的情况下进行通信——相反,它们可以简单地使用 localhost。这是因为 Pod 内的容器共享一个网络命名空间——本质上,它们通过同一个桥接器进行通信,桥接器是使用虚拟网络接口实现的。

腾讯云服务器 阿里云服务器
关注微信
^