人生苦短,我用k8s--------------k8s的前世今生
Kubernetes是什麼意思?為什麼又稱作K8S?
Kubernetes的名字來自希臘語,意思是“舵手” 或 “領航員”。K8s是將8個字母“ubernete”替換為“8”的縮寫。
文章目錄
Kubernetes是什麼意思?為什麼又稱作K8S?
Kubernetes的名字來自希臘語,意思是“舵手” 或 “領航員”*。*K8s是將8個字母“ubernete”替換為“8”的縮寫。
一:K8S誕生史
通過發展史來了解K8S的誕生
1、公有云型別說明:IAAS,PAAS,SAAS
在雲端計算的概念中,我們可以把公有云分為三個層面,IAAS(基礎設施即服務),PAAS(平臺即服務),SAAS(軟體即服務).
-
IAAS:基礎設施即服務。
Infrastructure-as-a-Service(IAAS),國內做的最好的就是阿里雲。 -
Platform-as-a-Service(PAAS),某些時候也叫做中介軟體, PAAS公司在網上提供各種開發和分發應用的解決方案,比如虛擬伺服器和作業系統。
一些大的PAAS提供者有Google App Engine,Microsoft Azure,Force.com,Heroku,Engine Yard等
國內做的最好的就是新浪雲 -
SAAS:軟體即服務。
Software-as-a-Service(SAAS),列舉一些例子:如Google Apps、Dropbox、Salesforce、Cisco WebEx、Concur和GoToMeeting等
做的比較好的是Microsoft Office 365
2、資源管理器的誕生
有了以上這些公有云之後,我們需要對其進行資源管理,那麼此時就誕生了資源管理器:MESOS–Docker Swarm–Kubernetes
(1)MESOS
MESOS:Mesos是Apache旗下的開源分散式資源管理框架,它被稱為是分散式系統的核心,後來在twitter得到廣泛使用。
Twitter也是mesos的最大客戶,但是大概在2019年5月份,Twitter 宣佈不再使用MESOS,而改用 Kubernetes,至此,Mesos已經是慢慢的被淘汰了
(2) Docker Swarm
Docker Swarm,是一個非常輕量的群集管理工具,只有幾十MB大小
Swarm 是 Docker官方提供的一款叢集管理工具,其主要作用是把若干臺 Docker 主機抽象為一個整體,並且通過一個入口統一管理這些 Docker 主機上的各種 Docker 資源。
但是Swarm 和 Kubernetes 比較類似,因為更加輕,所以具有的功能也較 kubernetes 更少一些。
大概在2019年7月份,阿里雲宣佈將Docker Swarm 從選擇列表中剔除,這也意味著在不就得將來,Docker Swarm 也會像Mesos一樣慢慢被淘汰掉
(3)Kubernetes
Kubernetes,作為壓軸的選手,其成為主流已是必然
Kubernetes是容器叢集管理系統,是一個開源的平臺,可以實現容器叢集的自動化部署、自動擴縮容、維護等功能
Kubernetes是Google 2014年建立管理的,是Google 10多年大規模容器管理技術Borg的開源版本
Kubernetes的名字來自希臘語,意思是“舵手” 或 “領航員”,所以他的圖示是這樣的
3、K8S優勢
輕量級:消耗資源小,開源,彈性伸縮,負載均衡:IPVS
可移植: 支援公有云,私有云,混合雲,多重雲(multi-cloud)
可擴充套件: 模組化, 外掛化, 可掛載, 可組合
自動化: 自動部署,自動重啟,自動複製,自動伸縮/擴充套件
二、K8S架構分析
1、K8S前身Borg系統架構介紹
K8S非常類似於Borg系統,理解Borg系統架構有助於我們理解K8S架構
BorgMaster是整個系統的首腦,所有外部請求都要由BorgMaster接收並分配給旗下的Borglet進行處理。並且BorgMaster實現了高可用,一般會有奇數個BorgMaster的節點副本。
Borglet則是處理所分配下來任務的最小的節點單元。
scheduler是一個排程器,BorgMaster是通過scheduler將任務傳送給Paxos鍵值對資料庫中。而Borglet中在Paxos中進行監聽,一旦監聽到派發的任務就會從資料庫中接收進行處理。
外部可以通過web網頁、命令、一些配置檔案對Borg系統進行訪問。
2、kubernetes的系統架構
K8s 叢集屬於主從分散式架構,主要由分散式儲存(etcd)、服務節點(Worker Node)和控制節點(Master Node)和一些其他核心元件構成
同剛介紹的Brog系統一樣,有控制節點和工作節點。
控制節點:
Master Node:作為控制節點,對叢集進行排程管理;Master Node由API Server、Scheduler、Cluster State Store和Controller-Manger Server所組成;
工作節點:
Worker Node:作為真正的工作節點,執行業務應用的容器;Worker Node包含kubelet、kube proxy和Container Runtime等;
3、元件介紹
etcd:鍵值對資料庫 儲存K8S叢集所有重要資訊(持久化),儲存了整個叢集的狀態
Master Node控制節點:
apiserver:是master控制節點中最重要的,所有的請求、訪問等通訊的入口內容都需要交給api server,也提供了認證,授權,訪問控制,API註冊和發現等機制
Scheduler:負責介紹任務,選擇合適的節點進行分配任務,即:負責資源的排程,按照預定的排程策略將Pod排程到相應的機器上;
Crontroller Manager:維持副本期望數目,負責維護叢集的狀態,比如故障檢測、自動擴充套件、滾動更新等;
Worker Node工作節點:
Kubelet(節點上的pod管家):直接跟容器引擎互動實現容器的生命週期管理,同時也負責Volume(CVI)和網路(CNI)的管理;負責Node節點上pod的建立、修改、監控、刪除等全生命週期的管理
Kube-proxy:負責寫入規則至 IPTABLES、IPVS 實現服務對映訪問,負責為Service提供cluster內部的服務發現和負載均衡;
Container runtime:負責映象管理以及Pod和容器的真正執行(CRI);
其他元件:
CoreDNS:可以為叢集中的SVC建立一個域名IP的對應關係解析
Dashboard:給 K8S 叢集提供一個 B/S 結構訪問體系,提供GUI;
Ingress Controller:為服務提供外網入口;官方只能實現四層代理,INGRESS 可以實現七層代理
Federation:提供跨可用區的叢集;提供一個可以跨叢集中心多K8S統一管理功能
PROMETHEUS:普羅米修斯,提供K8S叢集的監控能力
ELK:提供 K8S 叢集日誌統一分析介入平臺
相關文章
- 人生苦短,我用 PythonPython
- 人生苦短,我用PythonPython
- 人生苦短,請用 Chrome!Chrome
- 人生苦短我用Python,本文助你快速入門Python
- 程式碼優化指南:人生苦短,我用Python優化Python
- MySQL 的前世今生MySql
- 遊戲的前世今生遊戲
- Mybatis的前世今生MyBatis
- IPD的前世今生
- RabbitMQ的前世今生MQ
- Serverless 的前世今生Server
- JavaScript的前世今生JavaScript
- WebP 的前世今生Web
- RunLoop的前世今生OOP
- 人生苦短,我選Python,C++,還是Java?PythonC++Java
- Webpack前世今生Web
- Unicode的前世今生Unicode
- HTTP/2.0的前世今生HTTP
- 元件化的前世今生元件化
- React ref 的前世今生React
- 外掛的前世今生
- Https的前世今生HTTP
- React Portal的前世今生React
- Android的前世今生Android
- React Mixin 的前世今生React
- 人生苦短,要學Python!Python
- 人生苦短,我學Python——Python的資料型別中Python資料型別
- Serverless For Frontend 前世今生Server
- 一、MySQL前世今生MySql
- 資料庫的前世今生資料庫
- iOS Device ID 的前世今生iOSdev
- 前端模組化的前世今生前端
- Redux的前世-今生-來世Redux
- HTTP 協議的前世今生HTTP協議
- JavaScript – 非同步的前世今生JavaScript非同步
- JavaScript 包管理的前世今生JavaScript
- 物聯網的前世今生
- ORACLE ERP 的前世今生Oracle