Kubernetes 構(gòu)建工具淺析_第1頁
Kubernetes 構(gòu)建工具淺析_第2頁
Kubernetes 構(gòu)建工具淺析_第3頁
Kubernetes 構(gòu)建工具淺析_第4頁
Kubernetes 構(gòu)建工具淺析_第5頁
已閱讀5頁,還剩4頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認(rèn)領(lǐng)

文檔簡介

Kubernetes集群的組件眾多,要部署一套符合生產(chǎn)環(huán)境的集群并不是一件容易的事。不過隨著云原生生態(tài)的逐漸成熟、社區(qū)的快速發(fā)展,特別是在它成為事實上的容器編排標(biāo)準(zhǔn)以后,基本所有的主流云平臺都完全支持Kubernetes,或把它作為核心的云解決方案。同時,本地部署也伴隨著出現(xiàn)了各類成熟的主動化解決方案。

因此,當(dāng)我們計劃或者開始使用Kubernetes時,我們都應(yīng)該嘗試問自己一個問題:“我該如何進行第一次的部署?”。在本文中,筆者將向大家介紹4種不同的技術(shù),大家可以基于此4種不同的構(gòu)建工具在自己的計算機上使用Kubernetes。對于每一個,筆者盡可能都會對解決方案進行簡短描述,并對其優(yōu)缺點進行分析,以幫助大家能夠?qū)ubernetes的有所了解。MinikubeMinikube是由Kubernetes社區(qū)維護的單機版的Kubernetes集群,其支持macOS,Linux、以及Windows等多種操作系統(tǒng)平臺,基于其最新的官方Stable版本,并開始支持Kubernetes的大部分功能,從基礎(chǔ)的容器編排管理,到高級特性如負(fù)載均衡、Ingress,權(quán)限控制等。非常適合作為Kubernetes入門,或開發(fā)測試環(huán)境使用。Minikube支持以下Kubernetes功能:DNS、NodePorts、ConfigMaps和Secrets、Dashboards、容器運行時:Docker、CRI-O以及containerd、啟用CNI(容器網(wǎng)絡(luò)接口)以及Ingress等等。其架構(gòu)示意圖如下所示:下面我們以Mac環(huán)境為例,簡要描述下Minikube相關(guān)部署過程,具體如下所示:[administrator@JavaLangOutOfMemory~]%/bin/zsh-c"$(curl-fsSL/cunkai/HomebrewCN/raw/master/Homebrew.sh)"[administrator@JavaLangOutOfMemory

~

]%

brew

install

minikube[administrator@JavaLangOutOfMemory~]%minikubestart當(dāng)然,我們還可以自定義參數(shù)進行啟動,具體如下所示:

[administrator@JavaLangOutOfMemory

~

]%

minikube

start

--iso-url=/minikube/iso/minikube-v1.x.x.iso--registry-mirror=--image-mirror-country=cn--image-repository=/google_containers--vm-driver=none--memory=4096部署完成后,檢測相關(guān)配置參數(shù)等。[administrator@JavaLangOutOfMemory~]%kubectlversionClientVersion:version.Info{Major:"1",Minor:"21",GitVersion:"v1.21.2",GitCommit:"092fbfbf53427de67cac1e9fa54aaa09a28371d7",GitTreeState:"clean",BuildDate:"2021-06-16T12:52:14Z",GoVersion:"go1.16.5",Compiler:"gc",Platform:"darwin/amd64"}ServerVersion:version.Info{Major:"1",Minor:"20",GitVersion:"v1.20.7",GitCommit:"132a687512d7fb058d0f5890f07d4121b3f0a2e2",GitTreeState:"clean",BuildDate:"2021-05-12T12:32:49Z",GoVersion:"go1.15.12",Compiler:"gc",Platform:"linux/amd64"}[administrator@JavaLangOutOfMemory~]%kubectlgetnode-owideNAMESTATUSROLESAGEVERSIONINTERNAL-IPEXTERNAL-IPOS-IMAGEKERNEL-VERSIONCONTAINER-RUNTIMEminikubeReadycontrol-plane,master15hv1.20.7<none>Ubuntu20.04.2LTS5.10.25-linuxkitdocker://20.10.7[administrator@JavaLangOutOfMemory~]%kubectlgetpod-ANAMESPACENAMEREADYSTATUSRESTARTSAGEkube-systemcoredns-74ff55c5b-p6dlz1/1Running015hkube-systemetcd-minikube1/1Running015hkube-systemkube-apiserver-minikube1/1Running015hkube-systemkube-controller-manager-minikube1/1Running015hkube-systemkube-proxy-dcr721/1Running015hkube-systemkube-scheduler-minikube1/1Running015hkube-systemstorage-provisioner1/1Running315hMinikube是一個Kubernetes-SIGs項目,其實現(xiàn)方法為生成一個實質(zhì)上是單節(jié)點K8s集群的VM。由于對一系列管理程序的支持,它可以在所有主要操作系統(tǒng)上使用。還允許并行創(chuàng)建多個實例。基于用戶的角度而言,Minikube是一款非常適合初學(xué)者的工具。使用minikubestart命令行啟動集群,幾分鐘后Kubectl就可以開始了。若要指定特定的Kubernetes版本,可以使用--Kubernetesversion標(biāo)志參數(shù)即可。KindKind即

“KubernetesInDocker”的縮寫,顧名思義是使用Docker容器作為Node并將Kubernetes部署至其中的一個工具。官方文檔中也把Kind作為一種本地集群搭建的工具進行推薦。Kind是一個命令行工具,可幫助我們基于Docker鏡像創(chuàng)建本地Kubernetes集群,使其能夠模擬本地系統(tǒng)上的Kubernetes集群。Kind是另一個KubernetesSIGs項目,但與Minikube相比有很大不同。顧名思義,它將集群移動到Docker容器中。與生成VM相比,這將顯著加快啟動速度。創(chuàng)建集群與Minikube的方法非常相似。執(zhí)行類創(chuàng)建集群。通過使用不同的名稱(-name)kind,可以并行創(chuàng)建多個實例。其架構(gòu)示意圖如下所示:與Minikube類似,簡要描述一下其部署過程,具體如下所示:[administrator@JavaLangOutOfMemory~]%brewinstallkind==>Downloading/homebrew-bottles/bottles/kind-0.11.1.big_sur.bottle.tar.gz########################################################################100.0%==>Pouringkind-0.11.1.big_sur.bottle.tar.gz==>Caveatszshcompletionshavebeeninstalledto:/usr/local/share/zsh/site-functions==>Summary

/usr/local/Cellar/kind/0.11.1:

8

files,

8.4MB[administrator@JavaLangOutOfMemory~]%kindversionkindv0.11.1go1.16.4darwin/amd64接下來,將下面的配置內(nèi)容保存至一個YAML文件中,比如名為kind-config.yaml,具體如下所示:kind:ClusterapiVersion:kind.sigs.k8s.io/v1alpha3kubeadmConfigPatches:-|apiVersion:kubeadm.k8s.io/v1beta1kind:ClusterConfigurationmetadata:name:confignetworking:serviceSubnet:/16imageRepository:/google_containersnodeRegistration:kubeletExtraArgs:pod-infra-container-image:/google_containers/pause:3.1-|apiVersion:kubeadm.k8s.io/v1beta1kind:InitConfigurationmetadata:name:confignetworking:serviceSubnet:/16imageRepository:/google_containersnodes:-

role:

control-plane[administrator@JavaLangOutOfMemory

~

]%

Kind

create

cluster

--name

demo-cls

--config

kind.yamlCreating

cluster

"kind"

...?Ensuringnodeimage(kindest/node:v1.21.1)???Preparingnodes???Creatingkubeadmconfig???Startingcontrol-plane???Clustercreationcomplete.Youcannowusetheclusterwith:

export

KUBECONFIG="$(kind

get

kubeconfig-path

--name="demo-cls")"kubectl

cluster-info基于此解決方案,允許我們部署所有類型的集群:例如:單節(jié)點、1個Master和幾個Worker以及多個Master和多個Worker。不僅如此,這些集群非常容易部署。通??梢越柚粋€非常簡單的YAML文件完成。從本質(zhì)上而言,Kind并不是打包一個虛擬化鏡像,而是直接將基于K8S組件運行在Docker環(huán)境。那么,此種模式能夠帶來了哪些好處呢?具體主要涉及以下方面:1、不需要運行GuestOS,占用資源更低。2、不基于虛擬化技術(shù),可以在VM中使用。3、文件更小,更利于移植。K3s基于其簡單性。作為一個單一的二進制文件(約100MB)進行打包和部署,我們只需幾秒鐘就可以得到一個完全成熟的Kubernetes集群。安裝體驗就像在集群的每個節(jié)點上運行一個腳本一樣簡單。基于其二進制文件封裝實體,K3s幾乎運行了Kubernetes集群的所有組件,包括APIserver、Scheduler和Controller。默認(rèn)情況下,每個K3s的安裝都包括控制平面、Kubelet和Containerd運行時,這些已經(jīng)足以運行Kubernetes工作負(fù)載。當(dāng)然,也可以添加只運行KubeletAgent和Containerd運行時的專用Worker節(jié)點,來調(diào)度和管理Pod生命周期。與傳統(tǒng)的Kubernetes集群相比,K3s中的Master節(jié)點和Worker節(jié)點并沒有明顯的區(qū)別??梢栽谌魏喂?jié)點上調(diào)度和管理Pod,不管它們扮演的是什么角色。所以,Master節(jié)點和Worker節(jié)點的命名方式不適用于K3s集群。在K3s集群中,將運行控制平面組件與Kubelet的節(jié)點稱為Server,而只運行Kubelet的節(jié)點稱為Agent。Server和Agent都有容器運行時和一個Kubeproxy,管理整個集群的Tunnel和網(wǎng)絡(luò)流量。其單節(jié)點架構(gòu)示意圖如下所示:源自官網(wǎng)(同下)K3s單節(jié)點集群的架構(gòu)如上圖所示,該集群有一個內(nèi)嵌SQLite數(shù)據(jù)庫的單節(jié)點K3sServer。在這種配置中,每個Agent節(jié)點都注冊到同一個Server節(jié)點。K3s用戶可以通過調(diào)用Server節(jié)點上的K3sAPI來操作Kubernetes資源。雖然單節(jié)點k3s集群可以滿足各種用例,但對于KubernetesControl-Plane的正常運行至關(guān)重要的環(huán)境,我們可以在高可用配置中運行K3s。一個高可用K3s集群由以下幾個部分組成:1、K3sServer節(jié)點:兩個或更多的Server節(jié)點將為KubernetesAPI提供服務(wù)并運行其他Control-Plane服務(wù)2、外部數(shù)據(jù)庫:與單節(jié)點k

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論