學習kubernetes(一)概念以及特性

一.概念
什麼是Kubernetes?

Kubernetes(k8s)是自動化容器操作的開源平臺,這些操作包括部署,調度和節點集羣間擴展。如果你曾經用過Docker容器技術部署容器,那麼可以將Docker看成Kubernetes內部使用的低級別組件。Kubernetes不僅僅支持Docker,還支持Rocket,這是另一種容器技術

二.特性

  • 自動化容器的部署和複製

  • 隨時擴展或收縮容器規模

  • 將容器組織成組,並且提供容器間的負載均衡

  • 很容易地升級應用程序容器的新版本

  • 提供容器彈性,如果容器失效就替換它

  • 監控,日誌問題
    三.k8s中的組件定義
    先來一張手繪圖
    2組件概念:
    k8s主要分爲兩個部分 master 和 node節點
    2.1 master
    主要由四個模塊組成:APIServer、scheduler、controller manager、etcd

  • APIServer 作爲整個系統的控制入口,以 REST API 服務提供接口
    APIServer負責對外提供RESTful的Kubernetes API服務,它是系統管理指令的統一入口,任何對資源進行增刪改查的操作都要交給APIServer處理後再提交給etcd。如架構圖中所示,kubectl(Kubernetes提供的客戶端工具,該工具內部就是對Kubernetes API的調用)是直接和APIServer交互的。

  • schedule 將 Pod 調度到 Node 上):負責節點資源管理,接受來自 kube-apiserver 創建 Pods 任務,並分配到某個節點
    scheduler的職責很明確,就是負責調度pod到合適的Node上。如果把scheduler看成一個黑匣子,那麼它的輸入是pod和由多個Node組成的列表,輸出是Pod和一個Node的綁定,即將這個pod部署到這個Node上。Kubernetes目前提供了調度算法,但是同樣也保留了接口,用戶可以根據自己的需求定義自己的調度算法。

  • controller manager 用來執行整個系統中的後臺任務,包括節點狀態狀況、Pod 個數、Pods 和 Service 的關聯等
    如果說APIServer做的是“前臺”的工作的話,那controller manager就是負責“後臺”的。每個資源一般都對應有一個控制器,而controller manager就是負責管理這些控制器的。比如我們通過APIServer創建一個pod,當這個pod創建成功後,APIServer的任務就算完成了。而後面保證Pod的狀態始終和我們預期的一樣的重任就由controller manager去保證了。

  • etcd 負責節點間的服務發現和配置共享
    etcd是一個高可用的鍵值存儲系統,Kubernetes使用它來存儲各個資源的狀態,從而實現了Restful的API。
    2.2 node
    每個Node節點主要由三個模塊組成:kubelet、kube-proxy、runtime。

  • runtime

runtime指的是容器運行環境,目前Kubernetes支持docker和rkt兩種容器。

  • kube-proxy 運行在每個計算節點上,負責 Pod 網絡代理。定時從 etcd 獲取到 Service 信息來做相應的策略
    該模塊實現了Kubernetes中的服務發現和反向代理功能。反向代理方面:kube-proxy支持TCP和UDP連接轉發,默認基於Round Robin算法將客戶端流量轉發到與service對應的一組後端pod。服務發現方面,kube-proxy使用etcd的watch機制,監控集羣中service和endpoint對象數據的動態變化,並且維護一個service到endpoint的映射關係,從而保證了後端pod的IP變化不會對訪問者造成影響。另外kube-proxy還支持session affinity。
  • kubelet 運行在每個計算節點上,作爲 agent,接受分配該節點的 Pods 任務及管理容器,週期性獲取容器狀態,反饋給 kube-apiserver
    Kubelet是Master在每個Node節點上面的agent,是Node節點上面最重要的模塊,它負責維護和管理該Node上面的所有容器,但是如果容器不是通過Kubernetes創建的,它並不會管理。本質上,它負責使Pod得運行狀態與期望的狀態一致。
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章