K8s基礎原理
k8s中文社區: https://www.kubernetes.org.cn/web
k8s快速入門: http://www.dockone.io/article/932docker
簡介
Kubernetes 簡單的說就是一個容器集羣編排工具數據庫
Kubernetes 是爲生產環境而設計的容器調度管理系統,對於負載均衡、 服務發現、高可用、滾動升級、自動伸縮等容器雲平臺的功能要求有原生支持網絡
一個K8s集羣是由分佈式存儲(etcd)、服務節點(Minion, etcd如今稱爲Node)和控制節點(Master)構成的。全部的集羣狀態都保存在etcd中,Master節點上則運行集羣的管理控制模塊。Node節點是真正運行應用容器的主機節點,在每一個Minion節點上都會運行一個Kubelet代理,控制該節點上的容器、鏡像和存儲卷等。架構
1. Master(管理節點)核心組件:負載均衡
- API-Server ---k8s系統對外接口,提供Restful API供客戶端和其餘組件調用,支持水平擴展
- Scheduler ---負責對資源進行調度,具體負責分配某個請求的Pod到某個節點上
- Controller ---對不一樣資源的管理器,維護集羣的狀態,包括故障檢測、自動擴展、滾動更新等
- Etcd ---做爲K/V數據庫,存放集羣狀態和配置相關數據
2. Node(工做節點)核心組件:分佈式
- Kubelet --- 節點上最主要的工做代理,彙報節點狀態並實現容器組的生命週期管理
- Kube-proxy --- 代理對抽象應用地址的訪問,負責配置正確的服務發現和負載均衡轉發規則(一般利用iptables規則)
- Container runtime --- 本地容器引擎 (標準僅支持docker(rkt,cri-o,frakti等其餘類型的容器使用CRI封裝好的外部命令))
3. Addons(可選組件):工具
- DNS --- 記錄啓動的容器組和服務地址,爲集羣提供dns服務
- CNI --- 容器網絡插件必選(Flannel,calio,...)
- WebUI --- web界面
- ...
4. 資源類型:spa
基礎資源:Pod / Service / Namespace / Volume插件
高級資源控制器(創建在基礎資源之上):ReplicaSet / Deployment / Daemonset / statefulSet / Job
- Client經過service-ip(cluster-ip)訪問Service
- Service經過Label(Label select)來關聯到Pod
- Service也有可能會被刪除,因此Client仍是要經過DNS解析得到service-ip
- Pod --- 容器運行所在地,也是k8s操做的最小單元。 同一個Pod內的容器默認時共享網絡的,而且能夠使用同一存儲卷
5. Kubernetes Network
K8S的架構圖:
K8S組件: