Kubernetes Pod

Kubernetes Pod

Pod是一個Kubernetes抽象,表示一組一個或多個應用程序容器(如Docker或rkt)以及這些容器的一些共享資源。這些資源包括:

  • 共享存儲,作爲卷
  • 網絡,作爲唯一的集羣IP地址
  • 有關如何運行每個容器的信息,例如容器映像版本或要使用的特定端

Pod用於模擬特定於應用程序的“邏輯主機”,並可以包含相對緊密耦合的不同應用程序容器。例如,一個Pod可能包含帶有Node.js應用程序的容器,也包含一個不同的容器,用於提供由Node.js Web服務器發佈的數據。Pod中的容器共享一個IP地址和端口空間,總是共址和共同調度,並在同一個節點上的共享上下文中運行。

Pod是Kubernetes平臺上的最小單元。當我們在Kubernetes上創建一個部署時,這個部署創建了帶有容器的Pod(而不是直接創建容器)。每個Pod與其調度的節點綁定,並保持到終止(根據重新啓動策略)或刪除。如果發生節點故障,則在羣集中的其它可用節點上調度相同的pod

節點

Pod總是在節點上運行。節點是Kubernetes中的工作器,可能是虛擬機或物理機,具體取決於羣集。每個節點由主管理。一個節點可以有多個容器,而Kubernetes主站自動處理在集羣中節點上的容器的調度。主站的自動調度考慮到每​​個節點上的可用資源。

每個Kubernetes節點至少運行:

  • Kubelet,負責Kubernetes Master和Node之間的通信的過程; 它管理在機器上運行的Pod和容器。

  • 容器runtime,(如docker,rkt),負責從註冊表中拉取鏡像,解包容器並運行應用程序。

    Kubernetes服務概述

    Kubernetes 是凡人。豆莢實際上有一個生命週期。當工作者節點死亡時,運行在節點上的Pod也丟失。然後,ReplicationController可能會通過創建新的Pod來動態地將羣集驅動回所需的狀態,以保持應用程序的運行。作爲另一個例子,考慮具有3個副本的圖像處理後端。那些副本是可以替換的。前端系統不應該關心後端副本,或者即使Pod丟失並重新創建。也就是說,Kubernetes集羣中的每個Pod都具有唯一的IP地址,即使是同一個節點上的Pod也是如此,因此需要一種自動協調Pod之間的更改的方法,以便您的應用程序繼續運行。

    Kubernetes中的服務是一個抽象,它定義了Pod的邏輯集合以及訪問它們的策略。服務啓用依賴Pod之間的鬆散耦合。使用YAML (首選)或JSON 定義服務,就像所有Kubernetes對象一樣。服務所針對的Pod集通常由LabelSelector來確定(請參閱下面爲什麼您可能需要Service而不包含selector在規範中)。

    雖然每個Pod都有一個唯一的IP地址,但是這些IP不會在沒有服務的情況下暴露在羣集之外。服務允許您的應用程序接收流量。通過type在ServiceSpec中指定一個服務可以以不同的方式暴露:

    • ClusterIP(默認) - 將服務公開在羣集中的內部IP上。這種類型使服務只能從羣集內訪問。
    • NodePort - 使用NAT在集羣中每個選定節點的同一端口上公開服務。使羣集外部的服務可以使用:。ClusterIP的超集。
    • LoadBalancer - 在當前雲中創建一個外部負載均衡器(如果支持),併爲服務分配一個固定的外部IP。NodePort的Superset。
    • ExternalName - 使用任意名稱(externalName在規範中指定)通過返回具有名稱的CNAME記錄公開該服務。沒有使用代理。此類型需要v1.7或更高版本kube-dns

    服務和標籤

    服務通過一組Pod來路由流量。服務是允許吊艙在Kubernetes中死亡和複製而不影響應用程序的抽象。在相關的Pod(例如應用程序中的前端和後端組件)之間的發現和路由由Kubernetes Services處理。

    服務使用標籤和選擇器來匹配一組Pod,這是一個允許對Kubernetes中的對象進行邏輯操作的分組原語。標籤是連接到對象的鍵/值對,可用於多種方式:

    • 指定用於開發,測試和生產的對象
    • 嵌入版本標籤
    • 使用標籤分類對象 標籤可以在創建時或之後附加到對象。可以隨時修改。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章