從架構(gòu)到部署强经,全面了解K3s

Kubernetes無處不在——開發(fā)者的筆記本睡陪、樹莓派、云夕凝、數(shù)據(jù)中心宝穗、混合云甚至多云上都有Kubernetes。它已然成為現(xiàn)代基礎(chǔ)設(shè)施的基礎(chǔ)码秉,抽象了底層的計算逮矛、存儲和網(wǎng)絡(luò)服務(wù)。Kubernetes隱藏了各種基礎(chǔ)設(shè)施環(huán)境之間的差異转砖,它將多云變成了現(xiàn)實须鼎。

Kubernetes也成為了編排的通用控制平面,不僅僅是容器編排府蔗,還包括虛擬機晋控、數(shù)據(jù)庫,甚至SAP Hana實例等各種資源姓赤。

盡管Kubernetes發(fā)展迅猛赡译,但還是給開發(fā)者和運營商拋出了許多挑戰(zhàn)。其中一個關(guān)鍵挑戰(zhàn)是在邊緣運行Kubernetes不铆。與云或數(shù)據(jù)中心相比蝌焚,邊緣是非常不同的。它運行在一個高度受限環(huán)境中的遠程位置誓斥。與運行在數(shù)據(jù)中心的同類設(shè)備相比只洒,邊緣設(shè)備的計算、存儲和網(wǎng)絡(luò)資源只有一小部分劳坑。邊緣設(shè)備與云的連接是斷斷續(xù)續(xù)的毕谴,而且它們主要在離線環(huán)境中運行。這些因素使得很難在邊緣部署和管理Kubernetes集群。

基于此涝开,業(yè)界應(yīng)用最為廣泛的K8S管理平臺創(chuàng)建者Rancher Labs發(fā)布了K3s循帐,這是一個Kubernetes的發(fā)行版,它針對邊緣進行了高度優(yōu)化忠寻。雖然K3s是Kubernetes的簡化版惧浴、迷你版,但API的一致性和功能并沒有受到影響奕剃。從kubectl到Helm再到Kubernetes,幾乎所有的云原生生態(tài)系統(tǒng)的工具都能與K3s無縫對接捐腿。實際上纵朋,K3s是一個經(jīng)過CNCF認證的、符合要求的Kubernetes發(fā)行版茄袖,可以在生產(chǎn)環(huán)境中部署操软。幾乎所有運行完整的Kubernetes集群的工作負載都能保證在K3s集群上工作。

Kubernetes這個10個字母的單詞宪祥,在社區(qū)里被稱為K8S聂薪。由于K3s正好是Kubernetes內(nèi)存的一半,Rancher為新的發(fā)行版找到了一個5個字母的單詞蝗羊,并將其簡稱為K3s藏澳。

深入了解K3s架構(gòu)

K3s的魅力在于它的簡單性。作為一個單一的二進制文件(約100MB)進行打包和部署耀找,你只需幾秒鐘就可以得到一個完全成熟的Kubernetes集群翔悠。安裝體驗就像在集群的每個節(jié)點上運行一個腳本一樣簡單。

K3s二進制文件是一個自給自足的封裝實體野芒,它幾乎運行了Kubernetes集群的所有組件蓄愁,包括API server、scheduler和controller狞悲。默認情況下撮抓,每個K3s的安裝都包括控制平面、kubelet和containerd運行時摇锋,這些已經(jīng)足以運行Kubernetes工作負載丹拯。當然,也可以添加只運行kubelet agent和containerd運行時的專用worker節(jié)點乱投,來調(diào)度和管理pod生命周期咽笼。

與傳統(tǒng)的Kubernetes集群相比,K3s中的master節(jié)點和worker節(jié)點沒有明顯的區(qū)別戚炫〗P蹋可以在任何節(jié)點上調(diào)度和管理Pod,不管它們扮演的是什么角色。所以施掏,master節(jié)點和worker節(jié)點的命名方式不適用于k3s集群钮惠。

在k3s集群中,將運行控制平面組件與kubelet的節(jié)點稱為server七芭,而只運行kubelet的節(jié)點稱為agent素挽。server和agent都有容器運行時和一個kubeproxy,管理整個集群的tunnel和網(wǎng)絡(luò)流量狸驳。

在這里插入圖片描述

在典型的k3s環(huán)境中预明,你運行一個server和多個agent。在安裝過程中耙箍,如果你傳遞了server的URL撰糠,節(jié)點就會變成一個agent;否則辩昆,你最終會運行另一個獨立的k3s集群阅酪,有自己的控制平面。

那么汁针,Rancher是如何降低k3s的內(nèi)存呢术辐?首先,他們?nèi)コ薑ubernetes的很多可選組件施无,這些組件對于運行一個最低限度的集群來說并不重要辉词。然后,它增加了一些必要的元素帆精,包括containerd较屿、Flannel、CoreDNS卓练、CNI隘蝎、Traefik ingress controller、本地存儲程序襟企、一個嵌入式服務(wù)負載均衡器和一個集成的網(wǎng)絡(luò)策略controller嘱么。所有這些組件都被打包成一個二進制文件,并在同一個進程中運行顽悼。除了這些曼振,該發(fā)行版還支持開箱即用的Helm chart。

上游的Kubernetes發(fā)行版是臃腫的蔚龙,有很多代碼可以刪除冰评。例如,存儲volume插件和云提供商API木羹,這些會極大增加發(fā)行版的內(nèi)存甲雅。K3s省略了所有這些解孙,以最大限度地減少二進制的大小。

另一個關(guān)鍵的區(qū)別是集群狀態(tài)的管理方式抛人。Kubernetes依靠分布式鍵值數(shù)據(jù)庫etcd來存儲整個集群的狀態(tài)弛姜。K3s用名為SQLite的輕量級數(shù)據(jù)庫取代了etcd,SQLite是一個成熟的嵌入式場景數(shù)據(jù)庫妖枚。很多移動應(yīng)用都會捆綁SQLite來存儲狀態(tài)廷臼。

在這里插入圖片描述

通過在至少三個節(jié)點上運行etcd,Kubernetes控制平面變得高度可用绝页。另一方面荠商,SQLite并不是分布式數(shù)據(jù)庫,它成為為了實現(xiàn)控制平面的高可用续誉,K3s server可以指向外部數(shù)據(jù)庫端點结啼。支持的數(shù)據(jù)庫包括etcd、MySQL和PostgreSQL屈芜。通過有效地將狀態(tài)委托給外部數(shù)據(jù)庫,K3s支持多個控制平面實例朴译,使得集群具有高可用性井佑。

Rancher正在試驗一種名為DQLite的分布式版本的SQLite,它最終可能會成為K3s的默認數(shù)據(jù)存儲眠寿。

在這里插入圖片描述

K3s最大的優(yōu)點是它的 “包含電池但可替換 "的方式躬翁。例如,我們可以用Docker CE運行時替換containerd運行時盯拱,用Calico替換Flannel盒发,用Longhorn替換本地存儲等等。

關(guān)于K3s架構(gòu)的詳細討論狡逢,我強烈推薦你觀看K3s的架構(gòu)師Darren Shepherd在北美KubeCon 2019上的演講:

https://youtu.be/-HchRyqNtkU

K3s部署場景和拓撲結(jié)構(gòu)

K3s發(fā)行版支持多種架構(gòu)宁舰,包括AMD64、ARM64和ARMv7奢浑。憑借一致的安裝體驗蛮艰,K3s可以在Raspberry Pi Zero、NVIDIA Jetson Nano雀彼、Intel NUC或Amazon EC2 a1.4xlarge實例上運行壤蚜。

在你需要一個單節(jié)點Kubernetes集群來維護部署manifest的相同工作流程的環(huán)境中,請在服務(wù)器或邊緣設(shè)備上安裝K3s徊哑。這使你可以靈活地使用你現(xiàn)有的CI/CD流水線和容器鏡像以及Helm chart或YAML文件袜刷。

如果你需要一個在AMD64或ARM64架構(gòu)上運行的高可用集群,安裝一個3節(jié)點的etcd集群莺丑,然后是3個K3s server和一個或多個agent著蟹。這樣就可以為你提供一個生產(chǎn)級的環(huán)境,并為控制平面提供HA。

當在云中運行K3s集群時草则,將server指向一個托管數(shù)據(jù)庫钢拧,如Amazon RDS或Google Cloud SQL,以運行一個具有多個agent的高可用控制平面炕横。每個K3s server可以運行在不同的可用性區(qū)域源内,以獲得最大的正常運行時間。

如果你在具有可靠的份殿、始終在線連接的邊緣計算環(huán)境中運行K3s膜钓,則在云中運行server,在邊緣運行agent卿嘲。這使你可以靈活地在云中運行一個高可用和可管理的控制平面颂斜,同時在遠程環(huán)境中運行agent。

最后拾枣,你可以將K3s HA控制平面部署在5G邊緣位置沃疮,如AWS Wavelength和Azure Edge Zones環(huán)境中,agent在設(shè)備中運行梅肤。這種拓撲結(jié)構(gòu)呼應(yīng)了智能建筑司蔬、智能工廠和智能醫(yī)療場景。

在此系列的下一篇文章中姨蝴,我將介紹在邊緣環(huán)境中部署HA集群的步驟俊啼,保持關(guān)注!

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末左医,一起剝皮案震驚了整個濱河市授帕,隨后出現(xiàn)的幾起案子,更是在濱河造成了極大的恐慌浮梢,老刑警劉巖度液,帶你破解...
    沈念sama閱讀 211,817評論 6 492
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件深浮,死亡現(xiàn)場離奇詭異笔呀,居然都是意外死亡觉壶,警方通過查閱死者的電腦和手機,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 90,329評論 3 385
  • 文/潘曉璐 我一進店門缝裤,熙熙樓的掌柜王于貴愁眉苦臉地迎上來屏轰,“玉大人,你說我怎么就攤上這事憋飞■纾” “怎么了?”我有些...
    開封第一講書人閱讀 157,354評論 0 348
  • 文/不壞的土叔 我叫張陵榛做,是天一觀的道長唁盏。 經(jīng)常有香客問我内狸,道長,這世上最難降的妖魔是什么厘擂? 我笑而不...
    開封第一講書人閱讀 56,498評論 1 284
  • 正文 為了忘掉前任昆淡,我火速辦了婚禮,結(jié)果婚禮上刽严,老公的妹妹穿的比我還像新娘昂灵。我一直安慰自己,他們只是感情好舞萄,可當我...
    茶點故事閱讀 65,600評論 6 386
  • 文/花漫 我一把揭開白布眨补。 她就那樣靜靜地躺著,像睡著了一般倒脓。 火紅的嫁衣襯著肌膚如雪撑螺。 梳的紋絲不亂的頭發(fā)上,一...
    開封第一講書人閱讀 49,829評論 1 290
  • 那天崎弃,我揣著相機與錄音甘晤,去河邊找鬼。 笑死饲做,一個胖子當著我的面吹牛安皱,可吹牛的內(nèi)容都是我干的。 我是一名探鬼主播艇炎,決...
    沈念sama閱讀 38,979評論 3 408
  • 文/蒼蘭香墨 我猛地睜開眼,長吁一口氣:“原來是場噩夢啊……” “哼腾窝!你這毒婦竟也來了缀踪?” 一聲冷哼從身側(cè)響起,我...
    開封第一講書人閱讀 37,722評論 0 266
  • 序言:老撾萬榮一對情侶失蹤虹脯,失蹤者是張志新(化名)和其女友劉穎驴娃,沒想到半個月后,有當?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體循集,經(jīng)...
    沈念sama閱讀 44,189評論 1 303
  • 正文 獨居荒郊野嶺守林人離奇死亡唇敞,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 36,519評論 2 327
  • 正文 我和宋清朗相戀三年,在試婚紗的時候發(fā)現(xiàn)自己被綠了咒彤。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片疆柔。...
    茶點故事閱讀 38,654評論 1 340
  • 序言:一個原本活蹦亂跳的男人離奇死亡,死狀恐怖镶柱,靈堂內(nèi)的尸體忽然破棺而出旷档,到底是詐尸還是另有隱情,我是刑警寧澤歇拆,帶...
    沈念sama閱讀 34,329評論 4 330
  • 正文 年R本政府宣布鞋屈,位于F島的核電站范咨,受9級特大地震影響,放射性物質(zhì)發(fā)生泄漏厂庇。R本人自食惡果不足惜渠啊,卻給世界環(huán)境...
    茶點故事閱讀 39,940評論 3 313
  • 文/蒙蒙 一、第九天 我趴在偏房一處隱蔽的房頂上張望权旷。 院中可真熱鬧替蛉,春花似錦、人聲如沸炼杖。這莊子的主人今日做“春日...
    開封第一講書人閱讀 30,762評論 0 21
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽坤邪。三九已至熙含,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間艇纺,已是汗流浹背怎静。 一陣腳步聲響...
    開封第一講書人閱讀 31,993評論 1 266
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留黔衡,地道東北人蚓聘。 一個月前我還...
    沈念sama閱讀 46,382評論 2 360
  • 正文 我出身青樓,卻偏偏與公主長得像盟劫,于是被迫代替她去往敵國和親夜牡。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當晚...
    茶點故事閱讀 43,543評論 2 349