天天看點

k8s 基本介紹

k8s元件介紹

    • k8s架構圖
    • etcd
    • kube-apiserver
    • kube-controller-manager
    • kube-scheduler
    • kubelet
    • kube-proxy
    • CoreDNS
    • Ingress
    • ReplicationController(RC)
    • ReplicaSet(RS)
    • deployment
    • statefullSet
    • prometheus
    • ELK
    • Node元件

k8s架構圖

k8s 基本介紹

說明:排程器和控制器都不直接和etcd打交道,都是通過api server進行操作的

etcd

etcd分布式鍵值資料庫,可以為整個分布式叢集提供關鍵資料的存儲,協助整個叢集正常運作,Etcd v2版已經在 k8s v1.11中棄用,目前是V3版。

kube-apiserver

Kubernetes API,叢集的統一入口,各元件協調者,以HTTPAPI提供接口服務,所有對象資源的增删改查和監聽操作都交給APIServer處理後再送出給Etcd存儲。

kube-controller-manager

處理叢集中正常背景任務,一個資源對應一個控制器,而ControllerManager就是負責管理這些控制器的(多個控制器)。

kube-scheduler

根據排程算法為新建立的Pod選擇合适的Node節點。

kubelet

kubelet是Master在Node節點上的Agent,管理本機運作容器的生命周期,比如建立容器、Pod挂載資料卷、下載下傳secret、擷取容器和節點狀态等工作,kubelet将每個Pod轉換成一組容器。

kube-proxy

在Node節點上實作Pod網絡代理,維護網絡規則和四層負載均衡工作(負責寫入規則至 IPTABLES IPVS 實作服務映射通路)。

CoreDNS

可以為叢集的SVC建立一個域名IP的對應關系解析

Ingress

可以實作k8s的七層代理(基于域名或ip),k8s本身隻能實作4層代理

ReplicationController(RC)

用來確定容器應用的副本數保持在客戶指定的個數,如果有容器異常退出,就會建立新的pod;如果異常多出來的容器也會被回收。新版本中建議使用ReplicaSet(RS)來替代RC

ReplicaSet(RS)

RS和RC可以了解為RS是RC的更新版,RS支援集合式的selector,但是一般還是建議使用depoyment來自動管理RS,這樣就無需擔心相容問題(比如RS不支援rolling-update,但是deployment支援)

deployment

deployment 通過建立rs來建立pod,在控制滾動更新時rs并不會被删除,而是被停用這樣可以達到版本回退的目的

statefullSet

是為了解決有狀态服務問題(RS和deployment是為無狀态服務設計的),其應用場景:

  • 穩定的持久化存儲,pod重新排程後 ,還能夠通路到相同的持久化資料,基于pvc來實作
  • 穩定的網絡辨別,pod重新排程後 其podName和HostName不變,基于HeadLess Service(沒有clusterId 的service)來實作
  • 有序部署,有序擴充,即pod是有序的,在部署或擴充時要按照定義的順序依次進行(即從0到N-1,在下一個pod運作之前,所有之前的pod都必須是running或ready狀态),基于init-container來實作
  • 有序收縮,有序删除(N-1到0)

prometheus

提供K8S的叢集監控能力

ELK

k8s叢集日志統一分析介入平台

Node元件

Node:是kubernetes叢集的工作負載節點。Master為其配置設定工作,當某個Node當機時,Master會将其工作負載自動轉移到其他節點

k8s 基本介紹

繼續閱讀