人生苦短,我用k8s--------------k8s的前世今生

不吃小白菜發表於2020-09-30

在這裡插入圖片描述

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 叢集日誌統一分析介入平臺

相關文章