K8S基礎概念
Node
Node作爲集羣中的工作節點,運行真正的應用程序,在Node上Kubernetes管理的最小運行單元是Pod。在每個Node上運行用於啓動和管理Pid的服務Kubelet,並能夠被Master管理。在Node上運行的服務進行包括Kubelet、kube-proxy和docker daemon。
Node信息如下:
- Node地址:主機的IP地址,或者Node ID。 Node運行狀態:包括Pending、Running、Terminated三種狀態。
Node - Condition(條件):描述Running狀態Node的運行條件,目前只有一種條件----Ready。Ready表示Node處於健康狀態,可以接收從Master發來的創建Pod的指令。
- Node系統容量:描述Node可用的系統資源,包括CPU、內存數量、最大可調度Pod數量等。
- 其他:Node的其他信息,包括實例的內核版本號、Kubernetes版本號、Docker版本號、操作系統名稱等。
查看Node信息:
kubectl describe node
Pod
Pod是Kubernetes的最基本操作單元,包含一個或多個緊密相關的容器
一個Pod中的應用容器共享同一組資源,如下所述:
- PID命名空間:Pod中的不同應用程序可以看到其他應用程序的進程ID;
- 網絡命名空間:Pod中的多個容器能夠訪問同一個IP和端口範圍;
- IPC命名空間:Pod中的多個容器能夠使用SystemV IPC或者POSIX消息隊列進行通信;
- UTS命名空間:Pod中的多個容器共享一個主機名;
- Volumes(共享存儲卷):Pod中的各個容器可以訪問在Pod級別定義的Volumes。
Label
Label以key/value鍵值對的形式附加到各種對象上,如Pod、Service、RC、Node等。Label定義了這些對象的可識別屬性,用來對它們進行管理和選擇
Replication Controller
Replication Controller是Kubernetes系統中的核心概念,用於定義Pod副本的數量。在Master內,Controller Manager進程通過RC的定義來完成Pod的創建、監控、啓停等操作。
Service
一個Service可以看作一組提供相同服務的Pod的對外訪問接口。Service作用於哪些Pod是通過Label Selector來定義的。
Volume
Volume是Pod中能夠被多個容器訪問的共享目錄。
Namespace
Namespace(命名空間)是Kubernetes系統中的另一個非常重要的概念,通過將系統內部的對象“分配”到不同的Namespace中,形成邏輯上分組的不同項目、小組或用戶組,便於不同的分組在共享使用整個集羣的資源的同時還能被分別管理。
Annotation
Annotation與Label類似,也使用key/value鍵值對的形式進行定義。Label具有嚴格的命名規則,它定義的是Kubernetes對象的元數據(Metadata),並且用於Label Selector。Annotation則是用戶任意定義的“附加”信息,以便於外部工具進行查找。
用Annotation來記錄的信息包括:
- build信息、release信息、Docker鏡像信息等,例如時間戳、release id號、PR號、鏡像hash值、docker registry地址等;
- 日誌庫、監控庫、分析庫等資源庫的地址信息;
- 程序調試工具信息,例如工具名稱、版本號等;
- 團隊的聯繫信息,例如電話號碼、負責人名稱、網址等。