Pods

Pods

Pod概念

Pod是kubernetes集群应用中的建立和部署的最小、最简单的kubernetes对象模型单元的基本执行单元。Pod表示在集群中运行的进程。api

Pod 封装了应用程序的容器(一个或多个),存储资源,惟一的网络IP和控制容器运行方式的选项。Pod表示部署的单位:能够是kubernetes集群的单个容器应用实例,也能够是少许紧耦合共享资源的容器应用。服务器

Docker是Pod 常见的容器运行工具,Pods 也支持其余容器运行工具。网络

kubernetes集群中的Pod能够经过两种方式运行:app

  • 运行单个容器。 每一个Pod运行一个容器,是kubernetes最经常使用的用例。在这种状况下,能够将Pod视为容器的包装。
  • 运行多个须要协调工做的容器。 Pod运行一个容器应用,应用程序由紧密耦合且须要共享资源的多个位于同一地点的容器组成。Pod将这些容器和存储资源包装在一块儿,成为一个可管理的实体。

每一个Pod旨在运行指定应用程序的单个实例,若是须要水平扩展,则应使用多个Pod,每一个实例一个。在kubernetes中这被称为复制。ide

Pods如何管理多容器

Pod旨在支持造成协做服务单元的多个协做过程(做为容器)。Pod中的容器会自动位于同一群集中的同一物理或虚拟机上,并在同一位置进行调度。容器能够共享资源和依赖项,彼此通讯,并协调什么时候以及如何终止它们。工具

请注意,在单个Pod中对多个位于同一地点和受共同管理的容器进行分组是一个相对高级的用例。您仅应在容器紧密耦合的特定实例中使用此模式。例如,您可能有一个充当共享卷中文件的Web服务器的容器,以及一个单独的“ sidecar”容器,该容器从远程源更新这些文件,以下图所示:spa

示例豆荚图

某些Pod具备InitContainer应用程序容器,初始化容器会在应用程序启动以前启动完毕。code

Pod为容器提供两种共享资源:网络和存储对象

网络

每一个Pod都分配有一个惟一的IP地址,Pod中每一个容器都共享网络名和空间,包括IP地址和网络端口。Pod中容器能够互相使用localhost通讯。当Pod中的容器与外部的实体进行通讯时,它们必须协调好如何使用共享的网络资源(好比端口)。进程

存储

Pod中能够指定一组共享存储,Pod中的Volume,全部容器均可访问共享卷,从而使这些容器能够共享数据(须要volumeMount 声明)。同时能够保存容器的数据,之外其中的某个容器须要从新启动丢失数据。

Pod模板

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"]
相关文章
相关标签/搜索