Kubernetes基礎認識
k8s可說是目前必學的知識點

Kubernetes基礎認識

自動化地以容器的形式管理你的應用程式 To host your application in the form of containers in a automated fashion

image-20211014130933320

名詞解釋

  • 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中

上次修改於 2021-10-06