# 什么是Kubernetes Pod？

> 来源：梦飞idc云平台 | 原文：https://www.mfisp.com/6982.html | 发布：2022-05-23 | 更新：2022-05-23 | 分类：IDC云库

Pod 是 Kubernetes 中最小的执行单元。一个 pod 封装了一个或多个应用程序。Pod 本质上是短暂的，如果 pod（或它执行的节点）发生故障，Kubernetes 可以自动创建该 pod 的新副本以继续操作。

Pod 是 Kubernetes 中最小的执行单元。一个 pod 封装了一个或多个应用程序。Pod 本质上是短暂的，如果 pod（或它执行的节点）发生故障，Kubernetes 可以自动创建该 pod 的新副本以继续操作。Pod 包含一个或多个 容器 （例如 Docker 容器）。Pod 还提供环境依赖项，包括持久存储卷（永久且可用于集群中所有 pod 的存储）和在 pod 中运行容器所需的配置数据。

 

![什么是Kubernetes Pod？](https://www.mfisp.com/wp-content/uploads/2021/12/2021123106253679.jpg)

 

**Pod 有什么作用？**

 

Pod 代表在集群上运行的进程。通过将 pod 限制为单个进程，Kubernetes 可以报告集群中运行的每个进程的运行状况。豆荚有：

 
 
- 唯一的 IP 地址（允许它们相互通信） 
- 持久存储卷（根据需要） 
- 确定容器应如何运行的配置信息。 

 

尽管大多数 pod 都包含一个容器，但许多 pod 会有几个容器紧密协作以执行所需的功能。

 

**豆荚有什么好处？**

 

当 pod 包含多个容器时，它们之间的通信和数据共享会被简化。由于 pod 中的所有容器共享相同的网络命名空间，因此它们可以相互定位并通过 localhost 进行通信。Pod 可以通过使用另一个 pod 的 IP 地址或通过引用驻留在另一个 pod 中的资源来相互通信。

 

Pod 可以包含在 Pod 启动时运行的容器，例如在应用程序容器运行之前执行所需的启动。此外，Pod 简化了可扩展性，允许根据需求变化自动创建和关闭副本 Pod。

 

**吊舱是如何工作的？**

 

Pod 由称为控制器的工作负载资源创建，控制器管理集群中 Pod 的推出、复制和运行状况。例如，如果集群中的一个节点发生故障，控制器会检测到该节点上的 pod 没有响应，并在其他节点上创建替换 pod。

 

三种最常见的控制器类型是：

 
 
- 临时的批处理类型作业 的作业，将运行任务完成 
- 无状态和持久性应用程序的部署 ，例如 Web 服务器（HPPT 服务器） 
- StatefulSets 用于有状态和持久性的应用程序，例如数据库 

 

如果一个 pod 有多个容器，它们都一起调度在集群中的同一台服务器上，无论是虚拟机还是物理服务器。pod 中的所有容器共享它们的资源和依赖关系，并且可以协调它们的执行和终止。例如，pod 可以包含在应用程序容器运行之前运行的“init”容器，为随后的应用程序设置环境。

 

Pod 几乎总是由控制器创建，然后控制器可以自动管理 pod 生命周期，包括替换失败的 pod、在必要时复制 pod，以及在它们完成或不再需要时将 pod 从集群节点中逐出。

 

控制器使用 pod 模板中的信息来创建 pod，控制器确保正在运行的 pod 与 pod 模板中定义的部署相匹配，例如通过创建副本以匹配部署中定义的数量。

 

![什么是Kubernetes Pod？](https://www.mfisp.com/wp-content/uploads/2021/12/2021123102564661.jpg)

 

**Pod 之间是如何通信的？**

 

创建 pod 时，会为其分配自己的唯一 IP 地址。如果 pod 中有多个容器，它们之间可以简单地使用 localhost 进行通信。pod 外部的通信是通过暴露一个端口来实现的。集群中 pod 之间的通信利用了 Kubernetes 为集群中的每个 pid 分配集群私有 IP 地址这一事实，从而无需在 pod 之间显式创建链接或将容器端口映射到主机端口。通过这种方式，集群中的每个 pod 都可以“看到”彼此，而无需 NAT。

 

**什么是基本的 kubectl 命令？**

 

Kubectl 提供了许多命令，允许用户创建 pod、使用部署运行它们、检查正在运行的 pod 的状态以及停止不再需要的 pod。JSON（JavaScript Object Notation）或 YAML（YAML Ain't Markup Language）命令对于编码命令都是有效的。

 

常用的 kubectl 命令如下：

 

**得到**

 

kubectl get 命令将显示一个或多个资源的表格信息。可以使用标签选择器过滤信息。可以仅从现有命名空间或集群中的所有命名空间显示信息。

 

命令“kubectl api-resources”将生成所有受支持资源的列表，您可以“获取”有关这些资源的信息。kubectl get 命令的一般格式是：

 

$ kubectl get [(-o|--output=)json|yaml|wide|custom-columns=...|custom-columns-file=...|go-template=...|go-template-file =...|jsonpath=...|jsonpath-file=...] (TYPE[.VERSION][.GROUP] [NAME | -l label] | TYPE[.VERSION][.GROUP]/NAME .. .) [旗帜]

 

**创建 Pod**

 

Pod 是使用 create 命令创建的，格式如下：

 

$ kubectl 创建 -f 文件名。

 

例如，命令：

 

kubectl create -f ./mypod.yaml 将从 YAML 文件“mypod”创建一个新 pod

 

**删除 Pod**

 

命令 “kubectl delete -f ./mypod.yaml” 将从集群中删除 pod “mypod”。删除 pod 是一个优雅的过程；Pod 将在被强制终止之前继续运行一段宽限期（默认为 30 秒）。如果需要，可以使用 –grace-period 标志覆盖宽限期值。

---
本页由 梦飞idc云平台（https://www.mfisp.com）提供。站点导航见 https://www.mfisp.com/llms.txt
