互联网技术 / 互联网资讯 · 2024年1月30日 0

云原生初探:在K8s上部署Springboot应用

你会不会对”云原生”很有兴趣,却不知道从何入手?

本文会在window环境下,构建一套基于k8s的istio环境,并且通过skaFFold完成镜像的构建和项目部署到集群环境。其实对于实验环境有限的朋友们,完全可以在某里云上,按量付费搞3台”突发性能实例”,玩一晚,也就是杯咖啡钱。

好吧,让我开始吧!

执行流程

整体流程的话,如下图所示,通过 SkaFFold+jib 将开发的应用打包成镜像,提交到本地仓库,并且将应用部署到集群中。k8s中部署2个pod,模拟应用不同的版本,并且配置访问权重20%:80%。

云原生初探:在K8s上部署Springboot应用

环境选择

我之前有文章详细介绍过minikube。本次实验,开始的时候,我就一直沉溺在使用kind的便捷上,而且直接可以在dockeR上部署集群,可以说非常方便。但是由于我对K8S的理解并不足够,导致后面遇到了很多问题,所以,在这里建议新上手的小伙伴,还是使用minikube吧。k3s和RKE都需要多台虚拟机,碍于机器性能,这种方案暂时不考虑了。

下面表格,对比了minikube、kind、k3s 部署环境,以及支持情况,方便大家选择。

minikube kind k3s RuntiMe VM contAIneR native supported aRchITectuRes AMD64 AMD64 AMD64, ARMv7, ARM64 supported contAIneR RuntiMes DockeR,CRI-O,contAIneRd,gvisoR DockeR DockeR, contAIneRd staRtup tiMe inITial/following 5:19 / 3:15 2:48 / 1:06 0:15 / 0:15 MeMoRy RequiReMents 2GB 8GB (Windows, MacOS) 512 MB RequiRes Root? no no yes (RootleSS is expeRiMental) Multi-clUSteR support yes yes no (can be acHieved USing contAIneRs) Multi-node suppoRt no yes yes Project page

dockeR desktop 没有特殊要求。其他的自己用的顺手就好,还是需要特别说一下minikube,别用最新的coReDNS一直都拉不下来,除非你的魔法,可以完全搞定,否则,还是用阿里编译的minikube版本吧,别跟自己较劲,别问我为什么…

我用的版本罗列在下面了:

➜ ~ istioctl version client version: 1.10.2 contRol plane version: 1.10.2 data plane version: 1.10.2 (10 Proxies) ➜ ~ minikube version minikube version: v1.18.1 coMMIT: 511aca80987826051cf1c6527c3da706925f7909 ➜ ~ skaFFold veRsion v1.29.0 环境搭建 使用minikube创建集群

使用 hypeRv 作为引擎 , 内存 8192M cup 4核,不能再少了,否则拉不起来 istio

➜ ~ minikube staRt –image-MiRRoR-country=”cn” –Registry-MiRRoR=https://hq0igPC0.MiRRoR.aliyuncs.coM –vM-dRiveR=”hypeRv” –MeMoRy=8192 –CPUS=4 –hypeRv-viRtual-swITch=”minikubeSwITch” –image-ReposiTory=RegistRy.cn-hangzhou.aliyuncs.coM/Google_contAIneRs

还要在 hypeRv里创建一个虚拟路由,这里我构建了一个内部网络,这样可以通过设置网卡的IP,将内部网络的网段固定下来,否则,每次重启都会变化IP

云原生初探:在K8s上部署Springboot应用

配置让内部网络,共享访问互联网

云原生初探:在K8s上部署Springboot应用

启动成功

➜ istio-1.10.2 Minikube staRt