您好,登錄后才能下訂單哦!
Kubernetes
Kubernetes是Google開源的一個(gè)容器編排引擎,它支持自動(dòng)化部署、大規(guī)??缮炜s、應(yīng)用容器化管理。在生產(chǎn)環(huán)境中部署一個(gè)應(yīng)用程序時(shí),通常要部署該應(yīng)用的多個(gè)實(shí)例以便對應(yīng)用請求進(jìn)行負(fù)載均衡。
在Kubernetes中,我們可以創(chuàng)建多個(gè)容器,每個(gè)容器里面運(yùn)行一個(gè)應(yīng)用實(shí)例,然后通過內(nèi)置的負(fù)載均衡策略,實(shí)現(xiàn)對這一組應(yīng)用實(shí)例的管理、發(fā)現(xiàn)、訪問,而這些細(xì)節(jié)都不需要運(yùn)維人員去進(jìn)行復(fù)雜的手工配置和處理。
節(jié)點(diǎn)
節(jié)點(diǎn)是Kubernetes中最小的計(jì)算硬件單元。它是集群中單個(gè)機(jī)器的表示。在大多數(shù)生產(chǎn)系統(tǒng)中,節(jié)點(diǎn)很可能是數(shù)據(jù)中心中的物理機(jī)器,或者是托管在像谷歌云平臺這樣的云供應(yīng)商上的虛擬機(jī)。不過,不要讓慣例限制了你的想象力,從理論上講,你可以把任何東西做成一個(gè)結(jié)點(diǎn)。
把機(jī)器看作一個(gè)“節(jié)點(diǎn)”,可以讓我們插入一個(gè)抽象層?,F(xiàn)在,我們不必?fù)?dān)心任何單個(gè)機(jī)器的獨(dú)特特性,而是可以簡單地將每臺機(jī)器看作一組可以使用的CPU和RAM資源。這樣,任何機(jī)器都可以替代Kubernetes集群中的任何其他機(jī)器。
Rancher
Rancher是一個(gè)開源的企業(yè)級容器管理平臺。通過Rancher,企業(yè)再也不必自己使用一系列的開源軟件去從頭搭建容器服務(wù)平臺。Rancher提供了在生產(chǎn)環(huán)境中使用的管理Docker和Kubernetes的全?;萜鞑渴鹋c管理平臺。
當(dāng)我第一次開始我的Kubernetes之旅時(shí),我一直在尋找一種設(shè)置本地部署環(huán)境的方式。很多人常常會使用minikube或microk8s,這兩者非常適合新手在單節(jié)點(diǎn)集群環(huán)境下進(jìn)行操作。但當(dāng)我已經(jīng)了解了基礎(chǔ)知識之后,這兩者顯然不太夠用,我需要進(jìn)一步尋找能夠運(yùn)行本地多節(jié)點(diǎn)集群、與生產(chǎn)環(huán)境更相似的平臺。為此,我查閱了許多參考資料,最后我找到了Rancher Server。接下來,我要介紹我是如何設(shè)置我的本地K8S多節(jié)點(diǎn)集群的。
上圖顯示了集群的架構(gòu),一個(gè)master節(jié)點(diǎn)和3個(gè)worker節(jié)點(diǎn)。要嘗試諸如使用ingress controller進(jìn)行負(fù)載均衡、會話保持、host親和性等跨節(jié)點(diǎn)功能,這是最低的配置。
Rancher Server的安裝并不復(fù)雜,它被打包為一個(gè)docker鏡像,并且可以作為一個(gè)容器運(yùn)行。一個(gè)節(jié)點(diǎn)的基本配置是運(yùn)行在Linux虛擬機(jī)上的docker CE 守護(hù)進(jìn)程。在本例中,我選擇使用Ubuntu 18.04 LTS(具體的節(jié)點(diǎn)要求請參考Rancher的官方文檔:https://rancher.com/docs/rancher/v2.x/en/installation/requirements/ )。當(dāng)我完成第一個(gè)VM設(shè)置時(shí),我直接將其復(fù)制到另外三個(gè)中。如果你和我的操作一樣,可以參考下方兩個(gè)tips:
安裝指定版本Docker:https://docs.docker.com/install/linux/docker-ce/ubuntu/
最終,4個(gè)節(jié)點(diǎn)都在我的電腦(i5,24G RAM)上啟動(dòng),并分配以下資源。
Master節(jié)點(diǎn)(2 core、4G RAM、Ubuntu 18.04 + Docker CE 18.09) x 1
sudo docker run --restart=unless-stopped \
-p 81:80 -p 444:443 rancher/rancher
以上命令可以啟動(dòng)Rancher server容器,并且將其運(yùn)行在master節(jié)點(diǎn)上。默認(rèn)狀態(tài)下,nginx ingress controller會嵌入到worker節(jié)點(diǎn)中,并且綁定端口80和443。因此我將Rancger server發(fā)布到端口81和444或其他端口,以避免端口沖突。
首先,使用master節(jié)點(diǎn)IP地址和端口444啟動(dòng)Rancher server控制臺,它會要求設(shè)置管理員密碼。
接著,確認(rèn)worker節(jié)點(diǎn)到達(dá)Rancher server的URL。這里為了方便我直接使用master節(jié)點(diǎn)IP地址作為URL。完成了初始設(shè)置后,Rancher server就可以添加新集群了。
因?yàn)槲蚁胍诒镜靥摂M機(jī)上運(yùn)行K8S集群而不是在云端,所以選擇“自定義”的選項(xiàng)(即上方說明為“ From my own existing nodes”),然后新集群的云提供商選項(xiàng)選為“None”。
在ubuntu虛擬機(jī)上復(fù)制并運(yùn)行docker命令來啟動(dòng)master節(jié)點(diǎn)。一個(gè)master節(jié)點(diǎn)至少要有etcd和control,如果你打算創(chuàng)建一個(gè)單節(jié)點(diǎn)集群,需要選擇所有3個(gè)角色并更改命令。
運(yùn)行docker命令之后,新節(jié)點(diǎn)將顯示在Rancher Server控制臺上,配置這一節(jié)點(diǎn)需要花費(fèi)一些時(shí)間,一旦配置完成,狀態(tài)將變?yōu)閍ctive。
對于worker節(jié)點(diǎn),我們僅需要在節(jié)點(diǎn)選項(xiàng)選擇“Worker”角色,然后在3個(gè)worker節(jié)點(diǎn)的Ubuntu虛擬機(jī)上復(fù)制并運(yùn)行docker命令。
最后,在我的電腦上多節(jié)點(diǎn)集群已經(jīng)準(zhǔn)備就緒。
新集群的Kubernetes版本時(shí)v1.14.6,你可以在上面的截圖內(nèi)看到。為了更好地將kubectl工具版本與集群匹配,在master節(jié)點(diǎn)上運(yùn)行以下命令,以安裝特定版本:
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工具需要一個(gè)kubeconfig文件與集群連接,新集群地kubeconfig文件可以在Rancher Server的控制臺中找到。
復(fù)制以上kubeconfig文件,并保存為~/.kube/config文件。隨后kubectl就能夠獲取集群信息。
免責(zé)聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點(diǎn)不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進(jìn)行舉報(bào),并提供相關(guān)證據(jù),一經(jīng)查實(shí),將立刻刪除涉嫌侵權(quán)內(nèi)容。