K8s 技術簡介

參考https://www.imooc.com/learn/978
K8s 以Google Borg爲原型
戰勝了Docker Swarm 和 Apache Mesos 成爲行業標準

發展趨勢
物理單機 2000
Iaas:AWS 2006 GCE 2008 2001- 2009
openStack 2010
私有云 公有云 混合雲

k8s會
1 自動負載均衡到pod節點
2 自動伸縮指的是 會動態的增加pod
3 方便的版本升級和回退

K8S架構與組件
-Master 集羣大腦
1 所有集羣的控制命令都傳遞給Master組件並在其上執行
2 每個k8s 集羣至少有一套Master組件(當前默認:一個 生產環境中需要多個 爲了高可用 防止有一個掛了)
3 每套master組件包括三個核心組件(apiserver,scheduler.controller-manager)以及集羣數據配置中心etcd

-API Server
1 集羣控制的唯一入口,是提供Kubernetes集羣控制的 RESTful API的核心組件
2 集羣內各個組件之間數據交互和通信的中樞
3 提供集羣控制的安全機制(身份認證\授權以及admission control)

-Scheduler
1 通過API Server的Watch接口監聽新建Pod副本信息,並通過調度算法爲該Pod選擇一個最合適的Node
2 支持自定義調度算法provider
3 默認調度算法內置預選策略和優選策略,決策考量資源需求\服務質量\軟硬件約束\親緣性\數據局部性等指標參數

-Etcd
1 集羣的主數據庫,存儲着所有資源對象以及狀態
2 默認與Master組件部署在一個Node上
3 Etcd的數據變更都是通過API Server進行

-ControllerManager:
1 集羣內各種資源controller的核心管理者
2 針對每一種具體的資源,都有相應的Controller
3 保證其下管理的每個Controller所對應的資源始終處於“期望狀態“

-Node 真正的工作負載節點
1 Kubernetes集羣由多個Node共同承擔工作負載,Pod被分配到某個具體的Node上執行
2 Kubernetes通過node controller對node資源進行管理.支持動態在集羣中添加或者刪除Node
3 每個集羣Node上都會部署Kubelet和Kube-proxy兩個組件

-Kubelet (管理node中的pod)
1 位於集羣中每個Node上的非容器形式的服務進程組件,Master和node之間的橋樑
2 處理Master下發到本Node上的Pod創建\啓停等管理任務;向API Server註冊Node信息
3 監控本Node上容器和節點資源情況,並定期向Master彙報節點資源佔用情況

-Kube-proxy
1 Service抽象概念的實現,將到Service的請求按策略(負載均衡)算法分發到後端Pod(Endpoint)上
2 默認使用iptables mode實現
3 支持nodeport模式,實現從外部訪問集羣內的service(端口映射?)

基礎概念
k8s對象 是一種持久化的\用於表示集羣狀態的實體
1 一種聲明式的意圖的記錄,一般使用yaml文件描述對象
2 集羣使用k8s對象來表示集羣的狀態
3 通過 API/kubectl管理k8s對象

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