k8s 集羣概念

一、概述:

  kubernetes是google開源的容器集羣管理系統,提供應用部署、維護、擴展機制等功能,利用kubernetes能方便管理跨集羣運行容器化的應用,簡稱:k8s(k與s之間有8個字母)

二、基本概念

  Pod:若干相關容器的組合,Pod包含的容器運行在同一host上,這些容器使用相同的網絡命令空間、IP地址和端口,相互之間能通過localhost來發現和通信。另外,這些容器還可共享一塊存儲卷空間。在k8s中創建,調度和管理的最小單位就是Pod,而非容器,Pod通過提供更高層次的抽象,提供了更加靈活的部署和管理模式;

    • k8s的基本操作單元,一個Pod由一個或多個容器組成,通常pod裏的容器運行的相同的應用;
    • 同一pod包含的容器運行在同一host上,作爲統一管理單元:
  •         同一pod 共享着相同的volumes, network命名空間, ip和port空間,這是通過Mapped Container做到的;
      • pid ns:處於同一pod中的應用可以看到彼此的進程
      • network ns:處於同一pod中的應用可以訪問一樣的ip和port空間
      • ipc ns:處於同一pod的應用可以用systemV ipc 或者posix消息隊列進行通信
      • UTC ns:處於同一pod應用共用一個主機名
  • ReplicationController (RC)
    • RC是用來管理Pod的,每個RC由一個或多個Pod組成;在RC被創建之後,系統將會保持RC中的可用Pod的個數與創建RC時定義的Pod個數一致,如果Pod個數小於定義的個數,RC會啓動新的Pod,反之則會殺死多餘的Pod。
    • RC通過定義的Pod模板被創建,創建後對象叫做Pods(也可以理解爲RC),可以在線修改Pods的屬性,以實現動態縮減、擴展Pods的規模
    • RC通過label關聯對應的Pods,通過修改Pods的label可以刪除對應的Pods在需要對Pods中的容器進行更新時,RC採用一個一個替換原則來更新整個Pods中的Pod;
    • reschudeling: 維護pod副本,“多退少補”;即使是某些minion宕機

    • scaling:通過修改rc的副本數來水平擴展或者縮小運行的pods
    • Rolling updates:一個一個地替換pods來rolling updates服務;
    • multiple release tracks:如果需要在系統中運行multiple release 服務,replication controller使用labels來區分multiple release tracks;

  Label

    • Label是用於區分Pod、Service、RC的key/value鍵值對
    • Pod、Service、RC可以有多個label,但是每個label的key只能對應一個value
    • 整個系統都是通過Label進行關聯,得到真正需要操作的目標

     Service

    Service也是k8s的最小操作單元,是真實應用服務的抽象

    Service通常用來將浮動的資源與後端真實提供服務的容器進行關聯

    Service對外表現爲一個單一的訪問接口,外部不需要了解後端的規模與機制

    Service是定義在集羣中一組運行Pod集合的抽象資源,它提供了所有相同的功能。當一個Service資源被創建後,將會分配一個唯一的IP(也叫做集羣IP),這個IP地址將存在於Service的整個生命資源,Service一旦被創建,整個IP無法進行修改。

Pod可以通過Service進行通信,並且所有的通信將會通過Service自動負載均很到所有的Pod中的容器。

三、kubernetes組成 

  k8s主要包括:

    kubectl 客戶端命令行工具:

      將接收的命令,發送給kube-apiserver,作爲對整個平臺操作的入口。

    kube-apiserver REST API服務:

      作爲整個系統的控制入口,以REST API的形式公開,可以橫向擴展在高可用的架構中。

    kube-controller-manager 多個控制器的合體,用來執行整個系統中的後臺任務,多個控制進程的合體:

    • Node Controller 負責整個系統中node up 或down的狀態的響應和通知
    • Replication Controller 負責維持Pods中的正常運行的Pod的個數
    • Endpoints Controller 負責維持Pods和Service的關聯關係
    • Service Account & Token Controllers負責爲新的命名空間創建默認的賬號和API訪問的Token    

    kube-scheduler 任務調度、命令下發

      負責監視新創建的Pods任務,下發至未分配的節點運行該任務

    kube-proxy 網絡代理轉發:

      kube-proxy運行在每個節點上,負責整個網絡規則的連接與轉發,使k8s中的service更加抽象化

    kubelet 容器的管理

      kubelet運行在每個節點上,作爲整個系統的agent,監視着分配到該節點的Pods任務,負責掛載Pods所依賴的卷組,下載Pods的祕鑰,運行Pods中的容器(通常是docker),週期獲取所有容器的狀態,通過導出Pod和節點的狀態反饋給REST系統;

    etcd 信息存儲

    flannel IP地址的分配

四、k8s架構圖

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章