我的想法是什麼
最近在學習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 ,可 長按 或 掃描 下面的 小心心 來訂閱 ↓ ↓ ↓
當下雲主機可以說非常火熱了,不知道大家是否用過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技術棧打造個人私有云(連載之:私有云客戶端打造)
總結
學以致用這個詞我近來感觸頗深,學一門技術,如果不輔之以實踐,真的很難深入其中。浮在表面不痛不癢地學習真心很不爽,沒有實踐,自己製造實踐也要上!大家共勉
後記
作者更多的SpringBt實踐文章在此:
- Spring Boot應用監控實戰
- SpringBoot應用部署於外接Tomcat容器
- ElasticSearch搜尋引擎在SpringBt中的實踐
- 初探Kotlin+SpringBoot聯合程式設計
- Spring Boot日誌框架實踐
- SpringBoot優雅編碼之:Lombok加持
如果有興趣,也可以抽點時間看看作者一些關於容器化、微服務化方面的文章:
- 利用K8S技術棧打造個人私有云 連載文章
- 從一份配置清單詳解Nginx伺服器配置
- Docker容器視覺化監控中心搭建
- 利用ELK搭建Docker容器化應用日誌中心
- RPC框架實踐之:Apache Thrift
- RPC框架實踐之:Google gRPC
- 微服務呼叫鏈追蹤中心搭建
- Docker容器跨主機通訊
- Docker Swarm叢集初探
- 高效編寫Dockerfile的幾條準則