基本概念與組件

基本概念

Kubernetes 中的絕大部分概念都抽象成 Kubernetes 管理的一種資源對象數據庫

  • Master:Master 節點是 Kubernetes 集羣的控制節點,負責整個集羣的管理和控制。Master 節點上包含如下組件:
  • kube-apiserver:集羣控制的入口,提供 HTTP REST 服務
  • kube-controller-manager:Kubernetes 集羣中全部資源對象的自動化控制中心
  • kube-scheduler:負責 Pod 的調度
  • Node:Node 節點是 Kubernetes 集羣中的工做節點,Node 上的工做負載由 Master 節點分配,工做負載主要是運行容器應用。Node 節點上包含如下組件:後端

    • kubelet:負責 Pod 的建立、啓動、監控、重啓、銷燬等工做,同時與 Master 節點協做,實現集羣管理的基本功能。
    • kube-proxy:實現 Kubernetes Service 的通訊和負載均衡
    • 運行容器化(Pod)應用
  • Pod: Pod 是 Kubernetes 最基本的部署調度單元。每一個 Pod 能夠由一個或多個業務容器和一個根容器(Pause 容器)組成。一個 Pod 表示某個應用的一個實例api

  • ReplicaSet:是 Pod 副本的抽象,用於解決 Pod 的擴容和伸縮
  • Deployment:Deployment 表示部署,在內部使用ReplicaSet 來實現。能夠經過 Deployment 來生成相應的 ReplicaSet 完成 Pod 副本的建立
  • Service:Service 是 Kubernetes 最重要的資源對象。Kubernetes 中的 Service 對象能夠對應微服務架構中的微服務。Service 定義了服務的訪問入口,服務的調用者經過這個地址訪問 Service 後端的 Pod 副本實例。Service 經過 Label Selector 同後端的 Pod 副本創建關係,Deployment 保證後端Pod 副本的數量,也就是保證服務的伸縮性。

 

k8s basic ​​

Kubernetes 主要由如下幾個核心組件組成:網絡

  • etcd 保存了整個集羣的狀態,就是一個數據庫;
  • apiserver 提供了資源操做的惟一入口,並提供認證、受權、訪問控制、API 註冊和發現等機制;
  • controller manager 負責維護集羣的狀態,好比故障檢測、自動擴展、滾動更新等;
  • scheduler 負責資源的調度,按照預約的調度策略將 Pod 調度到相應的機器上;
  • kubelet 負責維護容器的生命週期,同時也負責 Volume(CSI)和網絡(CNI)的管理;
  • Container runtime 負責鏡像管理以及 Pod 和容器的真正運行(CRI);
  • kube-proxy 負責爲 Service 提供 cluster 內部的服務發現和負載均衡;

固然了除了上面的這些核心組件,還有一些推薦的插件:架構

  • kube-dns 負責爲整個集羣提供 DNS 服務
  • Ingress Controller 爲服務提供外網入口
  • Heapster 提供資源監控
  • Dashboard 提供 GUI

組件通訊

Kubernetes 多組件之間的通訊原理:負載均衡

  • apiserver 負責 etcd 存儲的全部操做,且只有 apiserver 才直接操做 etcd 集羣
  • apiserver 對內(集羣中的其餘組件)和對外(用戶)提供統一的 REST API,其餘組件均經過 apiserver 進行通訊微服務

    • controller manager、scheduler、kube-proxy 和 kubelet 等均經過 apiserver watch API 監測資源變化狀況,並對資源做相應的操做
    • 全部須要更新資源狀態的操做均經過 apiserver 的 REST API 進行
  • apiserver 也會直接調用 kubelet API(如 logs, exec, attach 等),默認不校驗 kubelet 證書,但能夠經過 --kubelet-certificate-authority 開啓(而 GKE 經過 SSH 隧道保護它們之間的通訊)插件

好比最典型的建立 Pod 的流程:code

​​

 ​​k8s pod

  • 用戶經過 REST API 建立一個 Pod
  • apiserver 將其寫入 etcd
  • scheduluer 檢測到未綁定 Node 的 Pod,開始調度並更新 Pod 的 Node 綁定
  • kubelet 檢測到有新的 Pod 調度過來,經過 container runtime 運行該 Pod
  • kubelet 經過 container runtime 取到 Pod 狀態,並更新到 apiserver 中
相關文章
相關標籤/搜索