我的想法是什麼
最近在學習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(目前還未跟後端聯調),讓大家有個感性的認識:
我準備如何來入手這個小項目
本來我的初衷就是想深入實踐一下Docker和Kubernetes(以下簡稱K8S)是怎麼玩的,但東西還真不少,總結了一下涉及的技術,可能還不止這些:
- Docker:不用多說,畢竟負責容器的落地,雲主機本質上就是一個win或linux容器
- Kubernetes:管理Docker的集羣技術,這裏面是有很多kube的組件
- flannel:負責節點中容器間的通信以及私有云各個實例的IP地址規劃
- etcd:分佈式數據庫,kubernetes和flannel都需要它
- SpringBt:驅動後端服務
- Vue.js:編寫私有云前端WEB頁面
…
我自己規劃了一個基本路線來入手:
- 熟悉Docker
- 熟悉Kubernetes基本概念並搭建K8S集羣
- K8S集羣理解與練手實驗
- 基礎鏡像製作與實驗,能完成單個操作系統容器的手動管理
- K8S資源控制代碼編寫,能實現集羣對容器資源的自動控制
- 私有云客戶端WEB前端頁面編寫
- 前後端聯調
- 總結輸出
我準備輸出哪些東西
準備輸出連載文章 + 源碼,這篇文章是連載系列的第一篇
- 利用K8S技術棧打造個人私有云(連載之:初章) (已完成)
- 利用K8S技術棧打造個人私有云(連載之:K8S集羣搭建)(已完成)
- 利用K8S技術棧打造個人私有云(連載之:K8S環境理解和練手)(已完成)
- 利用K8S技術棧打造個人私有云(連載之:基礎鏡像製作與實驗)
- 利用K8S技術棧打造個人私有云(連載之:資源控制研究)
- 利用K8S技術棧打造個人私有云(連載之:私有云客戶端打造)(Coming Soon...)
- 利用K8S技術棧打造個人私有云(連載之:總結與昇華)(Coming Soon...)
總結
學以致用這個詞我近來感觸頗深,學一門技術,如果不輔之以實踐,真的很難深入其中。浮在表面不痛不癢地學習真心很不爽,沒有實踐,自己製造實踐也要上!大家共勉