利用K8S技術棧打造個人私有云(連載之:初章)

CodeSheep發表於2018-01-25

我的想法是什麼

最近在學習Docker技術,相信Docker技術大家都有所瞭解,Docker類似於虛擬機器(但與虛擬機器又有本質不同),提供程式級別的隔離。我們可以利用Docker來方便地來做很多事情,比如搭建一個翻牆VPN、搞一個爬蟲、弄一個私人部落格,部署一個裸機上比較難以安裝的環境等等……可以說幾乎沒有什麼目的辦不到,這簡直是宅男老鐵們的福利啊!

但話又說回來,單個Docker所能發揮的作用畢竟有限,也不便於批量管理,更滿足不了各種量比較大的業務場景所需的高可用、彈性伸縮等特性,所以Docker得組叢集來並賦予各種完善的排程機制才能發揮強大的技術優勢。既然要組叢集那就涉及諸如Docker的資源排程、管理等等一系列問題。Docker叢集技術發展得很火熱, 目前涉及Docker叢集的三個主要的技術無外乎Docker Swarm、Kubernetes、Mesos三種主流方案。

Docker Swarm是Docker提供的原生叢集技術,我只做過一些初步實踐(Docker Swarm叢集初探),發現還比較容易上手,大家也可以自行去深入學習一下,我就不多說了。

Kubernetes(以下簡稱K8S)源自於Google,是一個為容器化應用提供自動部署、擴容和管理的開源專案,社群非常活躍,也是用得更加廣泛的Docker叢集技術。我最近也是花了一些時間在這上面進行學習,但由於缺少實際實踐經驗,總有點不痛不癢的感覺,所以沒辦法只能自己來創造一些實踐,就想著用它來做出點什麼出來。

好,背景介紹完了。那我到底想用我剛自學的Docker和Kubernetes來做一件什麼事情呢?聽我慢慢道來...

注: 本文首發於 My 公眾號 CodeSheep ,可 長按掃描 下面的 小心心 來訂閱 ↓ ↓ ↓

CodeSheep · 程式羊


當下雲主機可以說非常火熱了,不知道大家是否用過BAT等一系列廠商旗下XX雲所提供的雲主機服務。我們只需要買一個雲主機,然後就可以盡情地去上面幹各種事情了,常見的比如建站、搭部落格、部署服務甚至直接買一個windows雲主機直接用於辦公。

以某個雲服務為例,來張圖看看:

某個雲服務的控制檯

然後我們就可以進去付費建立一個雲主機自己使用,就像下面這樣:

例項化(建立)雲主機

這種服務如今如此地火熱,我想這背後肯定少不了的就是容器技術和叢集技術的加持,想到這裡我想大家應該明白我這篇文章的主題了。是的,本篇文章及接下來的連載系列文章將詳細講述如何用k8s技術棧打造一個屬於自己的私有云服務(取名為 SheepCloud,怎麼樣是不是很時髦...)。這樣的話,我自己在家就可以申請建立很多雲主機節點,然後自己想做啥就做啥,什麼雲端計算、分散式實驗統統不都可以免費進行了!

嗯,理想是好的,接下來還有一大堆事情要做呢...


我準備打造什麼樣形式的個人私有云

其實上面已經說過了,準備模仿那些雲服務提供商的雲主機功能,先在網頁上申請建立雲主機,建立成功後分配 IP地址/子網號 + 使用者名稱 + 密碼 給使用者,這樣使用者就可以用用ssh方式連入分配到的具有獨立IP的雲主機中進行工作,這樣就和那些服務商提供的雲主機服務沒有什麼不同了。

所以首先得有前端頁面,我自己用Vue.js寫了一個Demo(目前還未跟後端聯調),讓大家有個感性的認識:

SheepCloud控制檯介面


我準備如何來入手這個小專案

本來我的初衷就是想深入實踐一下Docker和Kubernetes(以下簡稱K8S)是怎麼玩的,但東西還真不少,總結了一下涉及的技術,可能還不止這些:

  • Docker:不用多說,畢竟負責容器的落地,雲主機本質上就是一個win或linux容器
  • Kubernetes:管理Docker的叢集技術,這裡面是有很多kube的元件
  • flannel:負責節點中容器間的通訊以及私有云各個例項的IP地址規劃
  • etcd:分散式資料庫,kubernetes和flannel都需要它
  • SpringBt:驅動後端服務
  • Vue.js:編寫私有云前端WEB頁面 …

我自己規劃了一個基本路線來入手:

  • 熟悉Docker
  • 熟悉Kubernetes基本概念並搭建K8S叢集
  • K8S叢集理解與練手實驗
  • 基礎映象製作與實驗,能完成單個作業系統容器的手動管理
  • K8S資源控制程式碼編寫,能實現叢集對容器資源的自動控制
  • 私有云客戶端WEB前端頁面編寫
  • 前後端聯調
  • 總結輸出

我準備輸出哪些東西

準備輸出系列連載文章,本篇文章是連載系列的第一篇


總結

學以致用這個詞我近來感觸頗深,學一門技術,如果不輔之以實踐,真的很難深入其中。浮在表面不痛不癢地學習真心很不爽,沒有實踐,自己製造實踐也要上!大家共勉


後記

作者更多的SpringBt實踐文章在此:


如果有興趣,也可以抽點時間看看作者一些關於容器化、微服務化方面的文章:


CodeSheep · 程式羊


相關文章