Pod是kubernetes集羣應用中的建立和部署的最小、最簡單的kubernetes對象模型單元的基本執行單元。Pod表示在集羣中運行的進程。api
Pod 封裝了應用程序的容器(一個或多個),存儲資源,惟一的網絡IP和控制容器運行方式的選項。Pod表示部署的單位:能夠是kubernetes集羣的單個容器應用實例,也能夠是少許緊耦合共享資源的容器應用。服務器
Docker是Pod 常見的容器運行工具,Pods 也支持其餘容器運行工具。網絡
kubernetes集羣中的Pod能夠經過兩種方式運行:app
每一個Pod旨在運行指定應用程序的單個實例,若是須要水平擴展,則應使用多個Pod,每一個實例一個。在kubernetes中這被稱爲複製。ide
Pod旨在支持造成協做服務單元的多個協做過程(做爲容器)。Pod中的容器會自動位於同一羣集中的同一物理或虛擬機上,並在同一位置進行調度。容器能夠共享資源和依賴項,彼此通訊,並協調什麼時候以及如何終止它們。工具
請注意,在單個Pod中對多個位於同一地點和受共同管理的容器進行分組是一個相對高級的用例。您僅應在容器緊密耦合的特定實例中使用此模式。例如,您可能有一個充當共享卷中文件的Web服務器的容器,以及一個單獨的「 sidecar」容器,該容器從遠程源更新這些文件,以下圖所示:spa
某些Pod具備InitContainer應用程序容器,初始化容器會在應用程序啓動以前啓動完畢。code
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"]