如何用Ubuntu和Xen來設置Kubernetes?

這篇博客描述了我如何設置本地Kubernetes。若是你想要本身設置Kubernetes,那麼點擊這裏參照指導:http://kubernetes.io/docs/getting-started-guides/scratch/。在我剛開始接觸這些內容的時候,我是多麼但願能有這樣一篇攻略帖!node

我想要運行本身的Kubernetes部署,來運行應用程序和試驗。我不只僅只是想測試Kubernetes,還想讓它24小時全天候運行。作到這樣最簡單的方法就是使用谷歌GCE或者AWS。若是使用這兩種方法,你就不須要花那麼多錢在保持基礎安裝運行。git

考慮了不少選擇以後(包括運行樹莓派集羣),我得出結論,我最好的設置就是運行單個主持不少虛擬機的物理服務器。api

我選了Xen做爲個人超管理器,Ubuntu做爲「dom0」(以後會對這個進行詳述),Core OS做爲個人Kubernetes主機。如下是個人設置。bash

硬件

  • Dell T20 服務器服務器

  • Intel i5-4590網絡

  • 16GB RAMdom

  • 120 GB SSDssh

軟件

超管理器:Xen 超管理器/Ubuntu16.04。我發現本身徹底被「dom0」的談論搞糊塗了,可是要點是:安裝Ubuntu16.04在本身的服務器上,而後你安裝(經過apt-get)Xen,安裝Xen就好像用你的原始Ubuntu安裝虛擬機同樣。這個虛擬機叫作「dem0」,能夠用來管理你的其它虛擬機。ide

(另外困擾的就是——Xen不是Xen服務器,你能夠徹底忽略Xen服務器這個商業產品)。測試

Kubernetes OS:Core OS Alpha Channel。如今爲止,Stable不包括kubelet(這個正是咱們須要的),因此咱們使用Alpha。這就是我選擇的,由於它支持Kubernetes既輕鬆又簡單。

安裝Xen

在一個新的Ubuntu16.04上面,安裝Xen,libvirt和virtinst。將它做爲默認引導點,而且從新啓動。virtinst

給咱們一個CLI,咱們以後會用來啓動虛擬機。

以後回來的就是原始Ubuntu,做爲一個虛擬機運行在Xen超管理器上。由於是原始安裝,因此咱們並不知道到底哪些東西是改變了的。咱們來查看一下:

看起來不錯!

安裝Kubernetes

Kubernetes和這些漂亮的腳本從基礎層面爲你設置整個集羣。我發現的問題就是,我想要本身管理(或者理解)這些軟件。我並不想要一個迷之bash腳原本替我處理一切問題。

相反,我建立了我自成一套的腳本,這個腳本少生成和模版,可能對某些例子來講是有用的。這裏展現的就是如何使用他們。

咱們會盡可能少使用個人東西——下面的git存儲庫是4Core OS雲配置文件。這些定義配置(網絡設置,應用程序)。也有爲集羣配置來生成咱們的SSL證書。

因此,從Github抓取個人文件,從最新的CoreOS Alpha抓取:

如今爲master,node1,node2,node3來建立一個磁盤:

若是你沒有SSH密鑰的話,你可能須要生成一個:

而後咱們把咱們的SSH密鑰放到雲端文件:

咱們也須要生成咱們的證書:

而後放入咱們生成的證書到master節點中:

配置完成,咱們如今能夠驗證雙重檢查:

若是經過了(從服務器看是「null」),那就使用這些磁盤建立一個Core OS虛擬機:

這就會開啓4個運行在Core OS上面的虛擬機,咱們的雲配置文件。這個取決於你在哪裏運行(網速,服務器電源),要花費比較長的時間才能啓動和運行。

可能發生的情況:

  • 下載Flannel鏡像

  • Kubelet開啓和下載超kube

  • 容器爲API服務器,controller 管理員,master上的調度器開啓

  • 爲kube-proxy的容器在節點上啓動

若是你須要,能夠鏈接到控制檯,而且監控節點啓動:

你也能夠ssh到master,而後查看journalctl:

因此,運行起來了嗎?讓咱們來使用kubectl(咱們先要在本地安裝一下這個):

讓咱們來看:

最後一條,若是咱們嘗試,而且列出pods(正在運行的進程),咱們得不到任何東西。咱們須要建立「kube-system」命名空間。這個很容易:

如今:

woohoo!

結論

因此咱們事實上完成了什麼呢?咱們已經將Ubuntu服務器移入到了一個Xen管理程序。在那臺超管理器上,咱們建立了4個運行在Core OS上的虛擬機。在個人Git存儲庫裏的Core OS文件,咱們設置了一個Core OS安裝,運行在master Kubernetes組件上,其它三個則運行在節點組件上。

咱們有不少方法讓Kubernetes運行在Core OS上面。特別的一點就是咱們按照以下流程來設置:

  • Flannel service——能夠用來處理咱們的網絡。它容許一個節點上的容器跟其它節點上的容器進行通訊。

  • etcd service——這就是Kubernetes 保持狀態的地方。

  • Docker service——Docker就是Kubernetes設置開啓鏡像的方式。

  • kubelet service——這就是kubernetes組件中惟一做爲系統service的。咱們使用kubelet來加入咱們的Kubernetes集羣,而後啓動其它kubernetes應用程序。 

跟系統service同樣,咱們也安裝瞭如下的東西做爲services,由Kubernetes管理,咱們經過在 /etc/kubernetes/manifests/中替換Kubernetes文件來完成。kubelet service監控這個目錄,而且基於它找到的東西來啓動應用程序。

  • kube-apiserver

  • kube-scheduler

  • kube-controller-manager

  • kube-proxy

就醬!咱們尚未一個功能徹底的Kubernetes集羣。是時候來玩一下它了!

原文連接:http://andrewmichaelsmith.com/2016/05/my-kubernetes-setup/#rd?sukey=3903d1d3b699c208044fe7370c2c0da4ad0e8778b3d89c41fe76f46b2d628d2e61027691212dea074c8e358d12d11ab0

(若是須要轉載,請聯繫咱們哦,尊重知識產權人人有責:)

相關文章
相關標籤/搜索