使用Rancher Server部署本地多節(jié)點K8S集群

當(dāng)我第一次開始我的Kubernetes之旅時,我一直在尋找一種設(shè)置本地部署環(huán)境的方式。很多人常常會使用minikube或microk8s,這兩者非常適合新手在單節(jié)點集群環(huán)境下進行操作。但當(dāng)我已經(jīng)了解了基礎(chǔ)知識之后,這兩者顯然不太夠用,我需要進一步尋找能夠運行本地多節(jié)點集群、與生產(chǎn)環(huán)境更相似的平臺。為此,我查閱了許多參考資料,最后我找到了Rancher Server。接下來,我要介紹我是如何設(shè)置我的本地K8S多節(jié)點集群的。
準(zhǔn)備master節(jié)點和worker節(jié)點的虛擬機

上圖顯示了集群的架構(gòu),一個master節(jié)點和3個worker節(jié)點。要嘗試諸如使用ingress controller進行負(fù)載均衡、會話保持、host親和性等跨節(jié)點功能,這是最低的配置。
Rancher Server的安裝并不復(fù)雜,它被打包為一個docker鏡像,并且可以作為一個容器運行。一個節(jié)點的基本配置是運行在Linux虛擬機上的docker CE 守護進程。在本例中,我選擇使用Ubuntu 18.04 LTS(具體的節(jié)點要求請參考Rancher的官方文檔:https://rancher.com/docs/rancher/v2.x/en/installation/requirements/)。當(dāng)我完成第一個VM設(shè)置時,我直接將其復(fù)制到另外三個中。如果你和我的操作一樣,可以參考下方兩個tips:
安裝指定版本Docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/
Clone虛擬機之后,更改Ubuntu主機名:https://linuxize.com/post/how-to-change-hostname-on-ubuntu-18-04/
最終,4個節(jié)點都在我的電腦(i5,24G RAM)上啟動,并分配以下資源。
Master節(jié)點(2 core、4G RAM、Ubuntu 18.04 + Docker CE 18.09) x 1
Worker節(jié)點(2 core, 3G RAM, Ubuntu 18.04 + Docker CE 18.09) x 3
在master節(jié)點上啟動Rancher server
sudo docker run --restart=unless-stopped \ ?-p 81:80 -p 444:443 rancher/rancher
以上命令可以啟動Rancher server容器,并且將其運行在master節(jié)點上。默認(rèn)狀態(tài)下,nginx ingress controller會嵌入到worker節(jié)點中,并且綁定端口80和443。因此我將Rancger server發(fā)布到端口81和444或其他端口,以避免端口沖突。
完成Rancher server初始設(shè)置

首先,使用master節(jié)點IP地址和端口444啟動Rancher server控制臺,它會要求設(shè)置管理員密碼。

接著,確認(rèn)worker節(jié)點到達Rancher server的URL。這里為了方便我直接使用master節(jié)點IP地址作為URL。完成了初始設(shè)置后,Rancher server就可以添加新集群了。
創(chuàng)建一個新的K8S集群和master節(jié)點

因為我想要在本地虛擬機上運行K8S集群而不是在云端,所以選擇“自定義”的選項(即上方說明為“ From my own existing nodes”),然后新集群的云提供商選項選為“None”。

在ubuntu虛擬機上復(fù)制并運行docker命令來啟動master節(jié)點。一個master節(jié)點至少要有etcd和control,如果你打算創(chuàng)建一個單節(jié)點集群,需要選擇所有3個角色并更改命令。

運行docker命令之后,新節(jié)點將顯示在Rancher Server控制臺上,配置這一節(jié)點需要花費一些時間,一旦配置完成,狀態(tài)將變?yōu)閍ctive。
創(chuàng)建worker節(jié)點

對于worker節(jié)點,我們僅需要在節(jié)點選項選擇“Worker”角色,然后在3個worker節(jié)點的Ubuntu虛擬機上復(fù)制并運行docker命令。

最后,在我的電腦上多節(jié)點集群已經(jīng)準(zhǔn)備就緒。
安裝kubectl工具來管理新的K8S集群
新集群的Kubernetes版本時v1.14.6,你可以在上面的截圖內(nèi)看到。為了更好地將kubectl工具版本與集群匹配,在master節(jié)點上運行以下命令,以安裝特定版本:
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的控制臺中找到。

復(fù)制以上kubeconfig文件,并保存為~/.kube/config文件。隨后kubectl就能夠獲取集群信息。

有關(guān)kubectl的安裝和配置可以參考以下連接:
安裝和設(shè)置kubectl:https://kubernetes.io/docs/tasks/tools/install-kubectl/
配置kubectl以訪問多集群:https://kubernetes.io/docs/tasks/access-application-cluster/configure-access-multiple-clusters/
原文鏈接:
https://medium.com/@kwonghung.yip/setup-local-kubernetes-multi-node-cluster-with-rancher-server-fdb7a0669b5c