kubernetes入門篇 —— 基本介紹

官方網址:https://kubernetes.io/docs/setup/production-environment/container-runtimes/#docker

kubernetes概述

  • Kubernetes 是一個開源的,用於管理雲平臺中多個主機的容器化的應用。
  • Kubernetes 的目標是讓部署容器化的應用簡單並且高效(powerful)
  • Kubernetes 提供了應用部署、規劃、更新以及維護的一種機制

核心特點:能夠自主的管理容器來保證雲平臺中的容器按照用戶的期望狀態運行着,【例如:用戶想讓Apache一直運行,並不需要關心如何做,Kubernetes會自動監控到,然後進行重啓、新建操作來保證Apache正常提供服務】管理員可以加載一個微型服務,讓規劃器來找到合適的位置。同時,Kubernetes也在系統的提升工具及人性化方面,方便用戶部署自己的應用
優勢:

  • 隱藏資源管理和錯誤處理,用戶僅需要關注應用的開發
  • 服務高可用、高可靠
  • 可將負載運行在由成千上萬的機器聯合而成的集羣中

kubernetes設計架構

Kubernetes集羣包括有節點代理kubelet和Master組件(APIs,scheduler、etc)
在這裏插入圖片描述

  • Kubernetes節點

在構架圖中,可以分爲兩個服務:運行在工作節點上的服務和組成集羣級別控制版的服務
Kubernetes節點有運行應用容器必備的服務,而這些都是受Master的控制。且每個節點都要運行Docker,使用Docker來負責所有具體的映像下載和容器運行

  • Kubernetes核心組件
etcd 保存整個集羣的狀態
apiserver 提供資源操作的唯一入口,並提供認證、授權、訪問控制、API註冊和發現等機制;
controller manager 負責維護集羣的狀態,比如故障檢測、自動擴展、滾動更新等
scheduler 負責資源的調度,按照預定的調度策略將Pod調度到相應的機器上
kubelet 負責維護容器的生命週期,同時也負責Volume(CVI)和網絡(CNI)管理
Container runtime 負責鏡像管理以及Pod和容器真正運行(CRI)
kube-proxy 負責爲Service提供cluster內部的服務發現和負載均衡
  • 推薦的Add-ons
kube-dns 負責爲整個集羣提供DNS服務
Ingress Controller 爲服務提供外網入口
Heapster 提供監控資源
Dashboard 提供GUI
Federation 提供跨可用區的集羣
Fluentd-elasticsearch 提供集羣日誌採集、存儲與查詢
  • 分層架構
    在這裏插入圖片描述
核心層:Kubernetes最核心的功能,對外提供API構建高層的應用,對內提供插件式應用執行環境
應用層:部署(無狀態應用、有狀態應用、批處理任務、集羣應用等)和路由(服務發現、DNS解析等)
管理層:系統度量(如基礎設施、容器和網絡的度量),自動化(如自動擴展、動態Provision等)以及策略管理(RBAC、Quota、PSP、NetworkPolicy等)
接口層:kubectl命令行工具、客戶端SDK以及集羣聯邦
生態系統:在接口層之上的龐大容器集羣管理調度的生態系統,可以劃分爲兩個範疇

kubelet:kubelet負責管理pods和它們上面的容器,images鏡像、volumes、etc
kube-proxy:每一個節點也運行一個簡單的網絡代理和負載均衡。正如Kubernetes API裏面定義的這些服務,也可以在各種終端中以輪詢的方式做一些簡單的TCP和UDP傳輸。
服務端點目前是通過DNS或者環境變量( Docker-links-compatible 和 Kubernetes{FOO}_SERVICE_HOST 及 {FOO}_SERVICE_PORT 變量都支持)。這些變量由服務代理所管理的端口來解析。
Kubernetes控制面板:Kubernetes控制面板可以分爲多個部分。目前它們都運行在一個master 節點,然而爲了達到高可用性,這需要改變。不同部分一起協作提供一個統一的關於集羣的視圖。
etcd:所有master的持續狀態都存在etcd的一個實例中。這可以很好地存儲配置數據。因爲有watch(觀察者)的支持,各部件協調中的改變可以很快被察覺。
Kubernetes API Server:API 服務提供Kubernetes API 的服務。這個服務試圖通過把所有或者大部分的業務邏輯放到不兩隻的部件中從而使其具有 CRUD 特性。它主要處理 REST 操作,在 etcd 中驗證更新這些對象(並最終存儲)。
Scheduler:調度器把未調度的 pod 通過 binding api 綁定到節點上。調度器是可插拔的,並且我們期待支持多集羣的調度,未來甚至希望可以支持用戶自定義的調度器。
Kubernetes控制管理服務器:所有其它的集羣級別的功能目前都是由控制管理器所負責。例如,端點對象是被端點控制器來創建和更新。這些最終可以被分隔成不同的部件來讓它們獨自的可插拔。
replicationcontroller:replicationcontroller 是一種建立於簡單的 pod API之上的一種機制。一旦實現,我們最終計劃把這變成一種通用的插件機制。

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