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"]
相關文章
相關標籤/搜索