互联网技术 / 互联网资讯 · 2024年3月7日

在 Kubernetes 上部署 Spring Boot 应用的云原生初体验

你是否对云原生感兴趣,却不知从何入手?

本文在 Windows 环境下,构建一套基于 Kubernetes 的 Istio 环境,并通过 Skaffold 搭配 Jib 完成镜像构建以及应用部署到集群。实验环境友好者也可以在云上按需使用三台实例,体验完整流程,成本仅相当于一杯咖啡的预算。

好,开始吧!

执行流程

整体流程如下:通过 Skaffold 搭配 Jib 将开发的应用打包成镜像,提交至本地镜像仓库,然后将应用部署到集群中。在 k8s 集群中部署两个 Pod,模拟应用的不同版本,并配置流量权重为 20% 与 80% 的分发。

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

环境选择

之前有文章介绍过本地调试。此次实验初始阶段,偏向使用 Kind 以获得便捷性,并且可以直接在容器环境中部署集群,操作相对简单。不过对于 Kubernetes 的理解还不充分,后续遇到了一些问题。因此建议初学者优先选择 Minikube 方案;K3s 和 RKE 需要多台虚拟机,当前机器资源有限,暂不考虑。

下面对比了 Minikube、Kind、K3s 的部署环境和适配情况,供参考选择。

[1] 表格来源待替换

Docker Desktop 没有特殊要求,其他工具按个人习惯即可。关于 Minikube,请使用稳定版本以避免网络组件下载失败的问题,尽量避免使用不稳定的镜像源。

版本信息示例如下,仅供参考:

➜ ~ Istio 客户端版本: 1.10.2 | 控制平面版本: 1.10.2 | 数据平面版本: 1.10.2 (10 个代理) ➜ ~ Minikube 版本: v1.18.1 | Skaffold 版本: v1.29.0

示例中使用的资源配置包括:给 Istio 环境分配充足内存与 CPU,确保组件能稳定运行。

➜ ~ Minikube 启动命令示例(参数仅作演示,不作为具体配置建议)

同时在网络网段内配置路由与 NAT,以确保内部网络可稳定访问互联网,避免重启后 IP 变化带来的困扰。

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

配置要点:确保内部网络能够共享访问互联网,以便拉取镜像与下载依赖。

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

启动成功

相关环境准备就绪后,可以进入后续的集成与部署阶段。