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

iMac Pro


我的想法是什麼

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

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

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

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

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


當下雲主機可以說非常火熱了,不知道大家是否用過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前端頁面編寫
  • 前後端聯調
  • 總結輸出

我準備輸出哪些東西

準備輸出連載文章 + 源碼,這篇文章是連載系列的第一篇

總結

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

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章