Kubernetes基礎認識
k8s可說是目前必學的知識點
Kubernetes基礎認識
自動化地以容器的形式管理你的應用程式 To host your application in the form of containers in a automated fashion
名詞解釋
-
Cluster:集群,計算、儲存資源的集合。一個Cluster通常包含一個Controller Plane和數個Node,視需求而定(也可能有Multi-Controller Plane 的集群)
- Controller Plane:(以前叫Mater)控制主節點,調度指揮所
- APIserver:管理整個 K8s 所需 API 的接口(Endpoint),提供HTTP Rest介面的關鍵服務處理程序,是集群中各個節點的溝通橋樑
- etcd:存資料
- Scheduler:資源調配,例如調度Pod運行在哪個Node
- Controller-manager:總經理,負責管理並運行
controller
,controller定義各種Pod的部屬特性(如最常用的Deployment)來滿足不同的業務場景
- Node:節點,讓物件(resource-objects)運行的實體或虛擬機器
- kubelet:對應api-server的接口,可以看成每個Node上的"實際執行者"或"操作者",負責接收來自api-server的訊息,並做出相對應的動作,例如,負責Pod對應的容器的建立、啟動或停止等。
- kube-proxy:維護網路規則(iptables),這些規則允許從群集內部或外部的與Pod進行通訊。
- Container Runtime:容器的運行引擎,預設是Docker,也支援其他滿足CRI標準的。
- Pod:可被調度的最小單位,每個Pod包含一或多個容器,Pod內共享生命週期、資源、通信(使用同一個網路namespace,即相同的IP與port)、儲存空間。通常使用是一個Pod中放一個容器;當需要高度共享資源時才會用一個Pod內多個容器的形式
延伸觀念
- Deployment:部屬,例如把Pod做橫向擴展,適用自動管理,或達成無停機系統升級
- Service:服務,Deployment可以部屬多個Pod,每個Pod都有自己的IP,隨時都在生滅浮動,外界如何訪問? 答案就是透過Service,可以說Controller負責運行Pod,而Service負責訪問Pod。
- Ingress:Service 中是將每個 Service 元件對外的 port number 跟 Node 上的 port number 做 mapping,這樣在我們的 Service 變多時,port number 以及分流規則的管理變得相當困難。而 Ingress 可以透過 HTTP/HTTPS,在我們眾多的 Service 前搭建一個 reverse-proxy。這樣 Ingress 可以幫助我們統一一個對外的 port number,並且根據 hostname 或是 pathname 決定封包要轉發到哪個 Service 上
- Namespace:命名空間,假如有多個用戶使用同一個Cluster,想把他們創建的Controller、Pod等資源分開,就靠Namespace。Namespace將物理的Cluster從邏輯上切成多個虛擬Cluster,每一個虛擬Cluster就是一個Namespace,不同Namespace中的資源完全隔離。K8s預設創建2個Namespace:
- default:如果不指定,資源就預設放這
- kube-system:K8s自己創建的系統資源會放在這個Namespace中
- Controller Plane:(以前叫Mater)控制主節點,調度指揮所
上次修改於 2021-10-06