當我第一次開始個人Kubernetes之旅時,我一直在尋找一種設置本地部署環境的方式。不少人經常會使用minikube或microk8s,這二者很是適合新手在單節點集羣環境下進行操做。但當我已經瞭解了基礎知識以後,這二者顯然不太夠用,我須要進一步尋找可以運行本地多節點集羣、與生產環境更類似的平臺。爲此,我查閱了許多參考資料,最後我找到了Rancher Server。接下來,我要介紹我是如何設置個人本地K8S多節點集羣的。node
上圖顯示了集羣的架構,一個master節點和3個worker節點。要嘗試諸如使用ingress controller進行負載均衡、會話保持、host親和性等跨節點功能,這是最低的配置。linux
Rancher Server的安裝並不複雜,它被打包爲一個docker鏡像,而且能夠做爲一個容器運行。一個節點的基本配置是運行在Linux虛擬機上的docker CE 守護進程。在本例中,我選擇使用Ubuntu 18.04 LTS(具體的節點要求請參考Rancher的官方文檔:https://rancher.com/docs/rancher/v2.x/en/installation/requirements/ )。當我完成第一個VM設置時,我直接將其複製到另外三個中。若是你和個人操做同樣,能夠參考下方兩個tips:nginx
安裝指定版本Docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/docker
Clone虛擬機以後,更改Ubuntu主機名:https://linuxize.com/post/how-to-change-hostname-on-ubuntu-18-04/ubuntu
最終,4個節點都在個人電腦(i5,24G RAM)上啓動,並分配如下資源。api
Master節點(2 core、4G RAM、Ubuntu 18.04 + Docker CE 18.09) x 1架構
Worker節點(2 core, 3G RAM, Ubuntu 18.04 + Docker CE 18.09) x 3app
sudo docker run --restart=unless-stopped \ -p 81:80 -p 444:443 rancher/rancher
以上命令能夠啓動Rancher server容器,而且將其運行在master節點上。默認狀態下,nginx ingress controller會嵌入到worker節點中,而且綁定端口80和443。所以我將Rancger server發佈到端口81和444或其餘端口,以免端口衝突。負載均衡
首先,使用master節點IP地址和端口444啓動Rancher server控制檯,它會要求設置管理員密碼。less
接着,確認worker節點到達Rancher server的URL。這裏爲了方便我直接使用master節點IP地址做爲URL。完成了初始設置後,Rancher server就能夠添加新集羣了。
由於我想要在本地虛擬機上運行K8S集羣而不是在雲端,因此選擇「自定義」的選項(即上方說明爲「 From my own existing nodes」),而後新集羣的雲提供商選項選爲「None」。
在ubuntu虛擬機上覆制並運行docker命令來啓動master節點。一個master節點至少要有etcd和control,若是你打算建立一個單節點集羣,須要選擇全部3個角色並更改命令。
運行docker命令以後,新節點將顯示在Rancher Server控制檯上,配置這一節點須要花費一些時間,一旦配置完成,狀態將變爲active。
對於worker節點,咱們僅須要在節點選項選擇「Worker」角色,而後在3個worker節點的Ubuntu虛擬機上覆制並運行docker命令。
最後,在個人電腦上多節點集羣已經準備就緒。
新集羣的Kubernetes版本時v1.14.6,你能夠在上面的截圖內看到。爲了更好地將kubectl工具版本與集羣匹配,在master節點上運行如下命令,以安裝特定版本:
curl -LO https://storage.googleapis.com/kubernetes-release/release/v1.14.6/bin/linux/amd64/kubectl chmod +x ./kubectl sudo mv ./kubectl /usr/local/bin/kubectl
Kubectl工具須要一個kubeconfig文件與集羣鏈接,新集羣地kubeconfig文件能夠在Rancher Server的控制檯中找到。
複製以上kubeconfig文件,並保存爲~/.kube/config文件。隨後kubectl就可以獲取集羣信息。
有關kubectl的安裝和配置能夠參考如下鏈接:
安裝和設置kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
配置kubectl以訪問多集羣:https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
原文連接: