云原生初体验:在k8s上部署springboot应用
Posted 麒思妙想
tags:
篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了云原生初体验:在k8s上部署springboot应用相关的知识,希望对你有一定的参考价值。
你会不会对“云原生”很有兴趣,却不知道从何入手?
本文会在window环境下,构建一套基于k8s的istio环境,并且通过skaffold完成镜像的构建和项目部署到集群环境。其实对于实验环境有限的朋友们,完全可以在某里云上,按量付费搞3台”突发性能实例“,玩一晚,也就是杯咖啡钱。
好吧,让我开始吧!
执行流程
整体流程的话,如下图所示,通过 Skaffold+jib 将开发的应用打包成镜像,提交到本地仓库,并且将应用部署到集群中。k8s中部署2个pod,模拟应用不同的版本,并且配置访问权重20%:80%。
环境选择
我之前有文章详细介绍过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 | https://minikube.sigs.k8s.io/ | https://kind.sigs.k8s.io/ | https://k3s.io/ |
[1] 表格引用自:http://jiagoushi.pro/minikube-vs-kind-vs-k3s-what-should-i-use
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
配置让内部网络,共享访问互联网
启动成功
➜ istio-1.10.2 minikube start
以上是关于云原生初体验:在k8s上部署springboot应用的主要内容,如果未能解决你的问题,请参考以下文章
半小时体验云原生:手把手教你在k8s上部署springboot应用——干货分享,建议收藏
云原生 初体验阿里云Serverless应用引擎SAE,前端Nginx静态文件持久化到对象存储OSS
云原生 Kubernetesk8s集群部署springboot项目
半小时学会在Win10上部署K8S,玩转云原生全干货,建议收藏