僅需60秒侯勉,使用k3s創(chuàng)建一個多節(jié)點K8S集群!

最近债蓝,我一直在Kubernetes上進(jìn)行各種測試和部署壳鹤。因此,我不得不一次又一次創(chuàng)建和銷毀Kubernetes集群饰迹,有的時候甚至在一個小時內(nèi)執(zhí)行好幾次芳誓。但由于我需要測試的某個事項需要一個全新的集群,所以簡單地刪除所有的pod啊鸭、service锹淌、deployment等,來讓集群變得“像新的一樣”并沒有任何作用赠制。

同時赂摆,我還需要一個盡可能與生產(chǎn)環(huán)境相似的集群挟憔,所以所有的本地解決方案(如Minikube、Vagrant等)都沒有任何作用烟号。

一開始绊谭,我使用了一個云提供商的托管Kubernetes,因為它易于部署汪拥,并且一旦集群啟動达传,我只需要單擊一下按鈕就可以下載kubectl配置。但是它存在三個問題:

  • 它會花費很多時間——每個集群大約需要10分鐘進(jìn)行部署迫筑。如果我每天都要部署并銷毀它宪赶,那么這些時間加起來就十分可觀了。

  • 需要手動下載與加載kubectl配置文件(這個操作盡管很簡單脯燃,但手動還是略微麻煩)

  • 這是一項托管服務(wù)搂妻,因此我沒有對集群的完全訪問權(quán)限。

所以我決定創(chuàng)建一個解決方案辕棚,可以讓我在云上快速又簡單地部署和銷毀Kubernetes集群:

https://github.com/DavidZisky/60sk3s

最終欲主,我得到了一個簡單的Bash腳本,該腳本可以在Google Cloud上創(chuàng)建虛擬機坟募,部署一個4節(jié)點的Kubernetes集群(1個主節(jié)點和3個worker節(jié)點)岛蚤,下載kubectl配置,并將其加載到我的系統(tǒng)中懈糯,而完成這一切僅需60秒涤妒!從零開始(甚至沒有虛擬機)到能夠執(zhí)行kubectl apply -f any_deployment.yaml,僅需不到1分鐘赚哗!那么具體要怎么操作呢她紫?

具體需求

于我而言,這一解決方案需要考慮的一個重要因素是盡可能可移植屿储。因此我盡量讓自己不使用太多工具(因此不需要Terraform贿讹、Ansible,也不需要安裝和配置)够掠。這是為什么我用Bash編寫它的原因民褂,而我唯一的依賴項是安裝和配置了GCloud CLI(帶有默認(rèn)區(qū)域和項目集)。

30秒啟動虛擬機

我們從虛擬機開始疯潭。一般情況下赊堪,在云上創(chuàng)建虛擬機大約需要45秒到60秒的時間。例如竖哩,在DigitalOcean上哭廉,啟動虛擬機(意味著ping開始響應(yīng))需要40秒,但你需要額外的15秒來啟動其他系統(tǒng)服務(wù)(最重要的是相叁,SSH server能夠接收連接)遵绰。

所以辽幌,首先我們需要讓整個流程更快,至少快兩倍椿访。

我們可以通過使用內(nèi)存更小的OS鏡像來實現(xiàn)乌企。這就是我堅持用Google Cloud的原因,因為它們提供最小的Ubuntu鏡像(小于200MB)成玫。同時逛犹,我嘗試了許多輕量級發(fā)行版,但它們要不就是沒有核心模塊梁剔,要不就是需要花很長的時間啟動。

在Google Cloud上創(chuàng)建和啟動Ubuntu迷你虛擬機花費大約30秒(從GCloud API調(diào)用到SSH Server準(zhǔn)備就緒)舞蔽。那么荣病,我們第一步就完成了,現(xiàn)在我們接下來看剩下的30秒渗柿。

30秒部署K8S集群

我們應(yīng)該如何在30秒內(nèi)部署一個Kubernetes集群呢个盆?答案是使用k3s!如果你還沒有聽說過k3s朵栖,可以翻閱我們往期文章或報名參加今天晚上8點半的在線培訓(xùn)(http://z-mz.cn/Pmwv)進(jìn)行了解颊亮。

通過使用k3s,我們不需要為Kubernetes啟動和運行操心太多陨溅,因為k3s安裝程序會為我們完成這些操作终惑。所以,我的腳本僅需下載并執(zhí)行它即可门扇。

將一切都連接起來

我們通過使用輕量的OS鏡像來在30秒之內(nèi)啟動虛擬機雹有。我們使用了k3s,可以讓我們在20秒之內(nèi)運行Kubernetes【始模現(xiàn)在霸奕,我們需要將所有的部件連接在一起。為了完成這一操作吉拳,我們準(zhǔn)備了一個Bash腳本:

  • GCloud命令以部署虛擬機
  • 在主節(jié)點下載并執(zhí)行k3s安裝程序
  • 獲取由k3s生成的token质帅,它可用于給集群添加節(jié)點
  • 在worker節(jié)點上下載并執(zhí)行k3s安裝程序(將token作為參數(shù))

唯一的挑戰(zhàn)是獲取生成的kubectl配置——Google虛擬機上的公共IP地址在計算機上是不可見/無法訪問的(當(dāng)你執(zhí)行“ip addr”或“ifconfig”時,你也無法找到該IP地址)留攒。所以煤惩,當(dāng)k3s生成證書以及kubeconfig時,從外部訪問集群是無效的稼跳。

但經(jīng)過多方面搜索盟庞,我發(fā)現(xiàn)了參數(shù)“--tls-san=”,它可以為證書生成提供額外的IP地址汤善。因此什猖,我們可以通過GCloud命令獲取IP地址票彪,然后安裝k3s時,將其作為參數(shù)的值傳遞不狮。如果k3s部署在所有節(jié)點上降铸,并且worker節(jié)點已在master節(jié)點上正確注冊,那么集群就已經(jīng)準(zhǔn)備就緒摇零。

剩下的最后一件事就是下載kubectl配置(使用scp以從master節(jié)點獲得文件)推掸。完成所有步驟僅需55到58秒。正如你所見驻仅,這個解決方案沒有什么特別之處谅畅,只有幾個GCloud和curl命令粘貼在一個bash腳本中。但這可以很快完成工作噪服。

在這里插入圖片描述

下一步是毡泻?

首先,當(dāng)前整個解決方案都經(jīng)過硬編碼粘优,以具有4個節(jié)點的集群(一個主節(jié)點和3個worker節(jié)點)仇味。使其易于配置,但我還從未測試過更大的集群雹顺。但我會盡快添加該選項丹墨。

其次,現(xiàn)在kubectl配置僅供下載(因此你可以將其作為參數(shù)傳遞給kubectl命令)嬉愧,或覆蓋現(xiàn)有的kubectl配置(已經(jīng)能夠滿足我的需求贩挣,因為我沒有長期運行的集群)。但是没酣,添加一個將配置附加到現(xiàn)有配置中的功能選項揽惹,然后更改上下文,長期來看是有益的四康。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
  • 序言:七十年代末搪搏,一起剝皮案震驚了整個濱河市,隨后出現(xiàn)的幾起案子闪金,更是在濱河造成了極大的恐慌疯溺,老刑警劉巖,帶你破解...
    沈念sama閱讀 216,372評論 6 498
  • 序言:濱河連續(xù)發(fā)生了三起死亡事件哎垦,死亡現(xiàn)場離奇詭異囱嫩,居然都是意外死亡,警方通過查閱死者的電腦和手機漏设,發(fā)現(xiàn)死者居然都...
    沈念sama閱讀 92,368評論 3 392
  • 文/潘曉璐 我一進(jìn)店門墨闲,熙熙樓的掌柜王于貴愁眉苦臉地迎上來,“玉大人郑口,你說我怎么就攤上這事鸳碧《芰郏” “怎么了?”我有些...
    開封第一講書人閱讀 162,415評論 0 353
  • 文/不壞的土叔 我叫張陵瞻离,是天一觀的道長腾仅。 經(jīng)常有香客問我,道長套利,這世上最難降的妖魔是什么推励? 我笑而不...
    開封第一講書人閱讀 58,157評論 1 292
  • 正文 為了忘掉前任,我火速辦了婚禮肉迫,結(jié)果婚禮上验辞,老公的妹妹穿的比我還像新娘。我一直安慰自己喊衫,他們只是感情好受神,可當(dāng)我...
    茶點故事閱讀 67,171評論 6 388
  • 文/花漫 我一把揭開白布。 她就那樣靜靜地躺著格侯,像睡著了一般。 火紅的嫁衣襯著肌膚如雪财著。 梳的紋絲不亂的頭發(fā)上联四,一...
    開封第一講書人閱讀 51,125評論 1 297
  • 那天,我揣著相機與錄音撑教,去河邊找鬼朝墩。 笑死,一個胖子當(dāng)著我的面吹牛伟姐,可吹牛的內(nèi)容都是我干的收苏。 我是一名探鬼主播,決...
    沈念sama閱讀 40,028評論 3 417
  • 文/蒼蘭香墨 我猛地睜開眼愤兵,長吁一口氣:“原來是場噩夢啊……” “哼鹿霸!你這毒婦竟也來了?” 一聲冷哼從身側(cè)響起秆乳,我...
    開封第一講書人閱讀 38,887評論 0 274
  • 序言:老撾萬榮一對情侶失蹤懦鼠,失蹤者是張志新(化名)和其女友劉穎,沒想到半個月后屹堰,有當(dāng)?shù)厝嗽跇淞掷锇l(fā)現(xiàn)了一具尸體肛冶,經(jīng)...
    沈念sama閱讀 45,310評論 1 310
  • 正文 獨居荒郊野嶺守林人離奇死亡,尸身上長有42處帶血的膿包…… 初始之章·張勛 以下內(nèi)容為張勛視角 年9月15日...
    茶點故事閱讀 37,533評論 2 332
  • 正文 我和宋清朗相戀三年扯键,在試婚紗的時候發(fā)現(xiàn)自己被綠了睦袖。 大學(xué)時的朋友給我發(fā)了我未婚夫和他白月光在一起吃飯的照片。...
    茶點故事閱讀 39,690評論 1 348
  • 序言:一個原本活蹦亂跳的男人離奇死亡荣刑,死狀恐怖馅笙,靈堂內(nèi)的尸體忽然破棺而出伦乔,到底是詐尸還是另有隱情,我是刑警寧澤延蟹,帶...
    沈念sama閱讀 35,411評論 5 343
  • 正文 年R本政府宣布评矩,位于F島的核電站,受9級特大地震影響阱飘,放射性物質(zhì)發(fā)生泄漏斥杜。R本人自食惡果不足惜,卻給世界環(huán)境...
    茶點故事閱讀 41,004評論 3 325
  • 文/蒙蒙 一沥匈、第九天 我趴在偏房一處隱蔽的房頂上張望撰洗。 院中可真熱鬧灾梦,春花似錦、人聲如沸。這莊子的主人今日做“春日...
    開封第一講書人閱讀 31,659評論 0 22
  • 文/蒼蘭香墨 我抬頭看了看天上的太陽霎桅。三九已至旅择,卻和暖如春,著一層夾襖步出監(jiān)牢的瞬間预麸,已是汗流浹背瞪浸。 一陣腳步聲響...
    開封第一講書人閱讀 32,812評論 1 268
  • 我被黑心中介騙來泰國打工, 沒想到剛下飛機就差點兒被人妖公主榨干…… 1. 我叫王不留吏祸,地道東北人对蒲。 一個月前我還...
    沈念sama閱讀 47,693評論 2 368
  • 正文 我出身青樓,卻偏偏與公主長得像贡翘,于是被迫代替她去往敵國和親蹈矮。 傳聞我的和親對象是個殘疾皇子,可洞房花燭夜當(dāng)晚...
    茶點故事閱讀 44,577評論 2 353

推薦閱讀更多精彩內(nèi)容