1. 程式人生 > >使用Rancher Server部署本地多節點K8S叢集

使用Rancher Server部署本地多節點K8S叢集

當我第一次開始我的Kubernetes之旅時,我一直在尋找一種設定本地部署環境的方式。很多人常常會使用minikube或microk8s,這兩者非常適合新手在單節點叢集環境下進行操作。但當我已經瞭解了基礎知識之後,這兩者顯然不太夠用,我需要進一步尋找能夠執行本地多節點叢集、與生產環境更相似的平臺。為此,我查閱了許多參考資料,最後我找到了Rancher Server。接下來,我要介紹我是如何設定我的本地K8S多節點叢集的。

準備master節點和worker節點的虛擬機器

上圖顯示了叢集的架構,一個master節點和3個worker節點。要嘗試諸如使用ingress controller進行負載均衡、會話保持、host親和性等跨節點功能,這是最低的配置。

Rancher Server的安裝並不複雜,它被打包為一個docker映象,並且可以作為一個容器執行。一個節點的基本配置是執行在Linux虛擬機器上的docker CE 守護程序。在本例中,我選擇使用Ubuntu 18.04 LTS(具體的節點要求請參考Rancher的官方文件:https://rancher.com/docs/rancher/v2.x/en/installation/requirements/ )。當我完成第一個VM設定時,我直接將其複製到另外三個中。如果你和我的操作一樣,可以參考下方兩個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個節點都在我的電腦(i5,24G RAM)上啟動,並分配以下資源。

  • 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 3

在master節點上啟動Rancher server

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或其他埠,以避免埠衝突。

完成Rancher server初始設定

首先,使用master節點IP地址和埠444啟動Rancher server控制檯,它會要求設定管理員密碼。

接著,確認worker節點到達Rancher server的URL。這裡為了方便我直接使用master節點IP地址作為URL。完成了初始設定後,Rancher server就可以新增新叢集了。

建立一個新的K8S叢集和master節點

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

在ubuntu虛擬機器上覆制並執行docker命令來啟動master節點。一個master節點至少要有etcd和control,如果你打算建立一個單節點叢集,需要選擇所有3個角色並更改命令。

執行docker命令之後,新節點將顯示在Rancher Server控制檯上,配置這一節點需要花費一些時間,一旦配置完成,狀態將變為active。

建立worker節點

對於worker節點,我們僅需要在節點選項選擇“Worker”角色,然後在3個worker節點的Ubuntu虛擬機器上覆制並執行docker命令。

最後,在我的電腦上多節點叢集已經準備就緒。

安裝kubectl工具來管理新的K8S叢集

新叢集的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/

原文連結:

https://medium.com/@kwonghung.yip/setup-local-kubernetes-multi-node-cluster-with-rancher-server-fdb7a0669b5c