Pod 是 Kubernetes 中的基本运算单元,它代表集群中运行的一个进程。Pod 可以包含一个或多个紧密相关的容器,这些容器共享网络名称空间、文件系统以及其他资源。
Pod 的主要特征是:
- 一个 Pod 中的容器共享网络命名空间,可以使用 localhost 互相访问。
- 一个 Pod 中的容器共享存储卷,可以实现容器间的数据共享。
- 一个 Pod 中的容器会启动、停止、重启同步。
- Pod 定义了容器运行前后的生命周期钩子。
- 每个 Pod 都有一个特殊的根容器,如果它停止,则所有容器都会停止。
Pod 主要用来管理容器,有以下好处:
- 资源共享和通信:Pod 中的容器可以共享资源和相互通信,它们之间的关系十分密切。
- 生命周期联动:Pod 中的容器会同时启动、停止、重启,简化了部署和管理。
- 作为调度单位:Kubernetes 的调度都是以 Pod 为单位进行的。
Pod 的定义由以下几个部分组成:
- metadata:名称、Label、Namespace 等。
- spec:Pod 的详细描述 containers:Pod 中的容器列表。
restartPolicy:重启策略,包括 Always、OnFailure、Never。
volumes:数据卷列表。
imagePullSecrets:拉取镜像的Secret。
nodeName:设置要调度到的节点。
tolerations:Pod 的容忍度设置。
affinity:亲和性设置。
… - status:Pod 的运行状态。
例如,我们可以定义一个包含两个容器的 Pod:
yaml
apiVersion: v1
kind: Pod
metadata:
name: mypod
spec:
containers:
- name: nginx
image: nginx
- name: busybox
image: busybox
command: ['sh', '-c', 'echo "Hello from busybox" && sleep 3600']
restartPolicy: Never
这个 Pod 中:
- 包含两个容器:nginx 和 busybox。
- 两个容器共享网络和存储卷。
- nginx 容器会一直运行,busybox 容器运行 1 小时后退出。
- 由于 restartPolicy 设置为 Never,busybox 容器退出后不会重启。
Pod 通过定义 spec 中的 containers 列表来表示其中的容器。Kubernetes 根据 Pod 的定义来启动所有容器,并根据 restartPolicy 的设置来重启容器。
所以总结来说,Pod 的主要特征是:
- 共享网络和存储:Pod 中的容器共享网络名称空间和存储卷。
- 生命周期联动:Pod 中的容器会同时启动、停止和重启。
- 作为调度单位:K8S 会将 Pod 作为单位调度到 Node 上。
Pod 的主要用途是:
- 资源共享和通信:Pod 中的容器可以共享资源和相互通信。
- 生命周期管理:简化了部署和管理。