Pod是kubernetes集群应用中的创建和部署的最小、最简单的kubernetes对象模型单元的基本执行单元。Pod表示在集群中运行的进程。
Pod 封装了应用程序的容器(一个或多个),存储资源,唯一的网络IP和控制容器运行方式的选项。Pod表示部署的单位:可以是kubernetes集群的单个容器应用实例,也可以是少量紧耦合共享资源的容器应用。
Docker是Pod 常见的容器运行工具,Pods 也支持其他容器运行工具。
kubernetes集群中的Pod可以通过两种方式运行:
每个Pod旨在运行指定应用程序的单个实例,如果需要水平扩展,则应使用多个Pod,每个实例一个。在kubernetes中这被称为复制。
Pod旨在支持形成协作服务单元的多个协作过程(作为容器)。Pod中的容器会自动位于同一群集中的同一物理或虚拟机上,并在同一位置进行调度。容器可以共享资源和依赖项,彼此通信,并协调何时以及如何终止它们。
请注意,在单个Pod中对多个位于同一地点和受共同管理的容器进行分组是一个相对高级的用例。您仅应在容器紧密耦合的特定实例中使用此模式。例如,您可能有一个充当共享卷中文件的Web服务器的容器,以及一个单独的“ sidecar”容器,该容器从远程源更新这些文件,如下图所示:
某些Pod具有InitContainer应用程序容器,初始化容器会在应用程序启动之前启动完毕。
Pod为容器提供两种共享资源:网络和存储
每个Pod都分配有一个唯一的IP地址,Pod中每个容器都共享网络名和空间,包括IP地址和网络端口。Pod中容器可以互相使用localhost通信。当Pod中的容器与外部的实体进行通信时,它们必须协调好如何使用共享的网络资源(比如端口)。
Pod中可以指定一组共享存储,Pod中的Volume,所有容器都可访问共享卷,从而使这些容器可以共享数据(需要volumeMount 声明)。同时可以保存容器的数据,以外其中的某个容器需要重新启动丢失数据。
apiVersion: v1
kind: Pod
metadata:
name: myapp-pod
namespace: default
labels:
app: myapp-pod
spec:
containers:
- name: myapp-container
image: busybox
command: ["sh","-c","echo Hello Kubernetes !! && sleep 100"]
原文:https://www.cnblogs.com/h-gallop/p/11774542.html