關於Kubernetes Pod的簡單介紹

關於Kubernets

要想了解Kubernetes Pod,我們要先知道Kubernetes是什麼?我們所熟知的k8s是將8個字母“ubernete”替換爲“8”的縮寫。

Kubernetes是容器集羣管理系統,是一個開源的平臺,可以實現容器集羣的自動化部署、自動擴縮容、維護等功能。

通過Kubernetes你可以:

  • 快速部署應用
  • 快速擴展應用
  • 無縫對接新的應用功能
  • 節省資源,優化硬件資源的使用

Kubernetes 特點

  • 可移植: 支持公有云,私有云,混合雲,多重雲(multi-cloud)
  • 可擴展: 模塊化, 插件化, 可掛載, 可組合
  • 自動化: 自動部署,自動重啓,自動複製,自動伸縮/擴展

使用Kubernetes能做什麼?

可以在物理或虛擬機的Kubernetes集羣上運行容器化應用,Kubernetes能提供一個以“容器爲中心的基礎架構”,滿足在生產環境中運行應用的一些常見需求,如:

  • 多個進程(作爲容器運行)協同工作(pod)
  • 存儲系統掛載
  • Distributing secrets
  • 應用健康檢測
  • 應用實例的複製
  • Pod自動伸縮/擴展
  • Naming and discovering
  • 負載均衡
  • 滾動更新
  • 資源監控
  • 日誌訪問
  • 調試應用程序
  • 提供認證和授權

瞭解Pod

Pod是Kubernetes創建或部署的最小/最簡單的基本單位,一個Pod代表集羣上正在運行的一個進程。

一個Pod封裝一個應用容器(也可以有多個容器),存儲資源、一個獨立的網絡IP以及管理控制容器運行方式的策略選項。Pod代表部署的一個單位:Kubernetes中單個應用的實例,它可能由單個容器或多個容器共享組成的資源。

Docker是Kubernetes Pod中最常見的runtime ,Pods也支持其他容器runtimes。

Kubernetes中的Pod使用可分兩種主要方式:

  • Pod中運行一個容器。“one-container-per-Pod”模式是Kubernetes最常見的用法; 在這種情況下,你可以將Pod視爲單個封裝的容器,但是Kubernetes是直接管理Pod而不是容器。
  • Pods中運行多個需要一起工作的容器。Pod可以封裝緊密耦合的應用,它們需要由多個容器組成,它們之間能夠共享資源,這些容器可以形成一個單一的內部service單位 - 一個容器共享文件,另一個“sidecar”容器來更新這些文件。Pod將這些容器的存儲資源作爲一個實體來管理。

Pods如何管理多個容器

Pods的設計可用於支持多進程的協同工作(作爲容器),形成一個cohesive的Service單位。Pod中的容器在集羣中Node上被自動分配,容器之間可以共享資源、網絡和相互依賴關係,並同時被調度使用。

在單個Pod中共同管理多個容器是一個相對高級的用法,應該只有在容器緊密耦合的特殊實例中使用此模式。例如,有一個容器被用作WEB服務器,用於共享volume,以及一個單獨“sidecar”容器需要從遠程獲取資源來更新這些文件,如下圖所示:

Pods提供兩種共享資源:網絡和存儲。

網絡

每個Pod被分配一個獨立的IP地址,Pod中的每個容器共享網絡命名空間,包括IP地址和網絡端口。Pod內的容器可以使用localhost相互通信。當Pod中的容器與Pod 外部通信時,他們必須協調如何使用共享網絡資源(如端口)。

存儲

Pod可以指定一組共享存儲volumes。Pod中的所有容器都可以訪問共享volumes,允許這些容器共享數據。volumes 還用於Pod中的數據持久化,以防其中一個容器需要重新啓動而丟失數據。有關Kubernetes如何在Pod中實現共享存儲的更多信息,請參考Volumes。

使用Pod

我們一般很少會直接在kubernetes中創建單個Pod。因爲Pod的生命週期是短暫的,用後即焚的實體。當Pod被創建後(不論是由你直接創建還是被其他Controller),都會被Kuberentes調度到集羣的Node上。直到Pod的進程終止、被刪掉、因爲缺少資源而被驅逐、或者Node故障之前這個Pod都會一直保持在那個Node上。

注意:重啓Pod中的容器跟重啓Pod不是一回事。Pod只提供容器的運行環境並保持容器的運行狀態,重啓容器不會造成Pod重啓。

Pod不會自愈。如果Pod運行的Node故障,或者是調度器本身故障,這個Pod就會被刪除。同樣的,如果Pod所在Node缺少資源或者Pod處於維護狀態,Pod也會被驅逐。Kubernetes使用更高級的稱爲Controller的抽象層,來管理Pod實例。雖然可以直接使用Pod,但是在Kubernetes中通常是使用Controller來管理Pod的。

要了解更多關於K8s的知識,請參考Kubernetes中文社區 | 中文文檔:http://docs.kubernetes.org.cn/

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章