《Kubernetes 构建工具浅析.docx》由会员分享,可在线阅读,更多相关《Kubernetes 构建工具浅析.docx(9页珍藏版)》请在优知文库上搜索。
1、KUberneteS兔群的组件众多,要部署一套符合生产环境的集群并不是一件容易的事.不过随着云原生生态的逐渐成熟、社区的快速发展,特别是在它成为事实上的容器编排标准以后,培木所有的主流云平台都完全支持Kubernetes,或把它作为核心的云解决方案。同时,本地部署也伴陋若出现了各类成熟的主动化解决方案.因此,当我们计划或者开始使用KUberneteS时,我们都应该尝试问自己一个问题:“我该如何进行第次的部詈?”.在本文中,爸者将向大家介绍4种不同的技术,大家可以基于此4种不同的构建工具在自己的计算机上使用Kuberneteso对于每一个,空者尽可能都会对解决方案进行简短描述并对其优缺点进行分析
2、以帮助大家能够对Kubernetes的有所了解.MinikUbeMinikUbe是由Kubernetes社区维护的单机版的Kubcrnetes集群,其支持nacOS,1.inux、以及Windows等多种操作系统平台,M于其最新的官方Stable版本,并开始支持Kubernetes的大部分功能,从基础的容器编排管理,到高欲特性如负载均衡、IngreSs,权限拄制等.非常适合作为KUberneteS入门,或开发测试环境使用。MinikUbe支持以下Kubernetes功能:DNS、NodcPortSxConfigMaps和Secrets、Dashboards容器运行时:DockerCRl-O以及
3、Conlainerd、启用CNI(容器网络接口)以及Ingress等等.其架构示意图如卜.所示:CIUSterMiniKubePodPod下面我们以Mac环境为例,简要描述下Minikube相关部署过程,具体如下所示:administrator1.angOutOfMei%binzsh-c11S(curl-fsS1.cunkaiHomebrewCNrawmasterHomebrew.sh)u(administratorJava1.angOutOfMemory%brewinstallminikubeadmiistrator3ava1.agOutOfMemory%zinikubestart当然,我们
4、还可以自定义参数进行启动,具体如下所示:(admiistratorJava1.angOutOfMemory%minikubestart-:/kubernetes.oss-cn-.iso-registrymirrorhttps:/registry.docker- -image-mirror-countrymen- -image-repositoryregi-hangzhou- -vmdrivernone-memory=4096部署完成后,检测相关配笆参数等administrator%kubectlversionclientVersion:version.InfofMajor:1,Minor:21
5、m,GitVersion:mv1.21.2u,GitCommit:Me92fbfbf53427de67cacle9faS4aaa09a28371d7M,GitTreeState:clean,BuildDate:m221-6-16T12:52:14Z1.GoVersion:,gol.16.5,Compiler:gc,Platform:Mdarwin/amd64ServerVersion:version.InfoMajor:lMinor:,20jGitVersion:vl.20.7,GitCommitr132a687512d7fbO58d0F589f07d4121b3f0a2e2,GitTreeS
6、tatezuClean,BuildDate:m221-5-12T12:32:49Z,GoVersion:gol.15.12,Compiler:,gc”,Platform:,linuxamd64)(administrator%kubectlgetnode-owideNAMESTATUSRO1.ESAGEVERSIONINTERNA1.-IPEXTERNA1.-IPOS-IMAGEKERNE1.-VERSIONCONTAINER-RUNTIMEminikubeReadycontrol-plane,masterIShvl.2.7192.168.49.2Ubuntu20.4.21.TS5.1.25-l
7、inukitdocker:administrator%kubectlgetpod-ANAMESPACENAMEREADYSTATUSRESTARTSAGEkube-SystemCorednS74ff55c5b-p6dlz1/1Running0IShkube-Systemeted-minikube1/1Running015hkube-systemkube-apiserver-minikube1/1Running15hkube-systemkube-cotroller-manager-minikube1/1Running0IShkube-Systemkube-proxy-der721/1Runni
8、ngiShkube-systemkube-scheduler-minikube1/1RunningIShkube-Systemstorage-provIsioner1/1Running315hMinikube是一个Kubernetes-SIGs项目,其实现方法为生成一个实质上是单节点K8s集群的VM.由于对一系列管理程序的支持,它可以在所有主要操作系统上使用。还允许并行创建多个实例.基于用户的角度而言,Minikube是一款非常适合初学者的工具.使用minikbestart命令行启动集群,几分钟后Kubectl就可以开始了。若要指定特定的Kubernetes版本,可以使用-Kubernetes
9、version标志参数即可.KindKind即uKubernetesInDocker的缩写,顾名思义是使用Docker容器作为Node并将Kubernetes部署至其中的一个工具,官方文档中也把Kind作为一种本地集群搭建的工具进行推荐.Kind是一个命令行工具,可帮助我们基于Docker潦像创建本地Kubernetes集群,使其能够模拟本地系统上的Kubernetes集群.Kind是另一个KubernetesSlGs项目,但与Minikube相比有很大不同.顾名思义,它将集群移动到Docker容器中.与生成VM相比,这将显著加快启动速度.创建集群与Minikube的方法非常相似.执行类创建集
10、群,通过使用不同的名称(-name)kind,可以并行创建多个实例.其架构示意图如下所示:与Minikube类似,简要描述一下其部署过程,具体如下所示:IadministratorDava1.angOutOfMemory%brewinstallkid=Downloadinghomebrewbott1.esbott1.eskind-0.11.1.btfl1.s11111,aa1a1a1a1IaaaAAaAAIA1,4AaIA1,4AaIA1,上#l.%=Pouringkind-0.11.l.big-sur.bottle.tar.gz=Caveatszshcompletionshavebeenin
11、stalledto:usrlocalsharezshsite-functions三三SummaryusrlocalCellarkind0.11.1:8files,8.4MB(admiistrator3ava1.angOutOfMefnory%kindversionkindv.ll.lgol.16.4damd64接下来,将下面的配置内容保存至一个YAM1.文件中,比如名为kind-config.yaml,具体如下所示:kind:ClusterapiVersion:kind.sigs.k8s.iovlalha3kubeadmConfIgPatches:IapiVersion:kubeadm.k8s
12、.iovlbetalkind:ClusterConfigurationmetadata:name:confignetworking:servicesubnet:10.0.0.1/16imageRepository:google-containersodeRegistratio:kubeletEtraArgs:google-containerspase:3.1apiVersion:kubeadm.k8s.iovlbetalkind:InitConfigurationmetadata:name:confignetworking:ServiceSubnet:10.0.0.1/16imageRepos
13、itory:google-containersnodes:control-plane(administPatorJava1.angOutOfMemory%Kindcreatecluster-namedemo-cis-configkind.yamlCreatingclusterkindEnsuringnodeimage(kindest/node:vl.21.1)EaPreparingnodesSCreatingkubeadmconfigBStartingcontrol-planeGKlustercreationcomplete.Youcannowusetheclusterwith:exportK
14、UBECONFIGv(kindgetkubeconfig-path-name=mdemo-c1s,),kubect1cluster-info基于此解决方案,允许我们部罟所有类型的集群:例如:单节点、1个Master和几个Worker以及多个MaSter和多个Worker,不仅如此,这些集群非常容易部罟.通常可以借助一个非常简单的YAM1.文件完成.从本质上而言,Kind并不是打包一个虚拟化镜像,而是直接将基于K8S组件运行在Docker环境。那么,此种模式能够带来了哪些好处呢?具体主要涉及以下方面:1.不需要运行GuestOS,占用资源更低.2、不基于虚拟化技术,可以在VM中使用.3、文件更小,更利于移植.K3s基于其简单性.作为一个单一的二进制文件(约100MB)进行打包和部雪,我们只需几秒钟就可以得到一个完全成熟的Kubernetes集群.安装体验就像在集群的每个节点上运行一个脚本一样简单.基于其二进制文件封装实体,K3s几乎运行了Kubernetes集群的所有组件,包括APIserver.Scheduler和Controller.默认情况下,每个K3s的安装都包