Spring Cloud Kubernetes 本地开发环境调试

一、Spring Cloud Kubernetes 本地开发环境调试

上面文章使用 Spring Cloud Kubernetes 在 k8s 环境中实现了服务注册发现、服务动态配置,但是需要放在 k8s 环境中才能正常使用,在本地开发环境中可能没有 k8s 环境,如何本地开发调试呢?

这点 Spring Cloud 官方已经考虑到了这个问题,Spring Cloud Kubernetes 项目的代码依赖于 Fabric8 Kubernetes Java 客户端,这是一个流畅的 DSL,可以使用协议与 K8s Server 进行 REST API 通信。

官方的介绍如下:

https://docs.spring.io/spring-cloud-kubernetes/reference/3.1-SNAPSHOT/kubernetes-awareness.html

整体本地开发环境构建的过程基本包括如下几步:

  • 将 k8s master 节点的 ~/.kube/config 文件复制到本机电脑的用户目录下的 .kube 目录中。
  • 本地环境安装 kubectl 工具。
  • 本地环境安装 KT-Connect 工具
  • 使用 ktctl connect 连接 k8s 环境。

二、将 k8s 的 config 复制到本机电脑

进入到已部署好的 k8s master 节点中:

shell 复制代码
cd ~/.kube

ll

将 config 文件复制出来放到本机电脑的 C:\Users\{你的用户名}\.kube 目录下。

修改文件中的 clusters.cluster.server 为 k8s master 节点的 ip ,如果已经是,则不用修改:

三、部署 kubectl 工具

下载 kubectl :

https://kubernetes.io/docs/tasks/tools/

根据自己的环境下载后,配置环境变量,在 Path 中新增一个,指向 kubectl.exe 所在目录。

验证是否正常,打开 CMD 窗口,查看 kubectl 的版本:

shell 复制代码
kubectl version --client --output=yaml

kubectl 会自动读取上面的 config 配置文件,所以此时可以直接查看 k8s 中的资源:

shell 复制代码
kubectl get pods -n kube-system

四、部署 KT-Connect

KtConnect 是一款基于 k8s 环境用于提高本地测试联调效率的小工具。

功能包括:

  • Connect:建立数据代理通道,实现本地服务直接访问 k8s 集群内网(包括Pod IP和Service域名)
  • Exchange:让集群服务流量重定向到本地,实现快速验证本地版本和调试排查问题
  • Mesh:创建路由规则重定向特定流量,实现多人协作场景下互不影响的本地调试
  • Preview:暴露本地服务到集群,实现无需发布即可在线预览集成效果

下载 KT-Connect ,进入下面连接,根据自己电脑系统情况,下载相应软件包,这里我下载的 Windows x86 64位:

https://github.com/alibaba/kt-connect/blob/master/docs/zh-cn/guide/downloads.md

下载后,解压可以看到 ktctl.exe 和 wintun.dll。

配置环境变量,在 Path 中新增一个,指向这两个文件所在目录。

以管理员身份打开 CMD 窗口,查看版本,验证是否正常:

shell 复制代码
ktctl -v

连接 K8s ,会自动在 k8s 中部署 kt-connect 服务。

shell 复制代码
ktctl connect

注意该 CMD 窗口不要关闭,关闭后会自动停掉连接。

shell 复制代码
kubectl get pods

五、本地环境调试

这里测试使用上篇文章实践的消费者服务,如果不清楚的可以在下面文章中找到搭建过程:

Spring Cloud 基于 K8s 原生能力实践 服务注册发现、服务动态配置

其中服务提供者需要已经部署到k8s环境中:

本地 IDEA 启动服务消费者,启动时,指定环境变量 KUBERNETES_NAMESPACE 为 k8s 部署服务的命名空间,上篇文章中我们使用的 cloud :

启动服务:

服务启动成功。

5.1 服务注册发现测试

调用 http://localhost:8080/discoveryInfo 查看服务信息:

已经能成功拿到 k8s 中的服务信息。

调用 http://localhost:8080/rpc 测试 RPC 远程调用,并且多次调用:


调用正常,并可以看到负载均衡效果。

5.2 服务动态配置测试

调用 http://localhost:8080/config 查看配置信息:

成功读取到 ConfigMap 中的配置信息。

尝试修改 K8s 中的配置文件:

shell 复制代码
kubectl edit configmap consumerconfig -n cloud

可以在 IDEA 看到触发了 restart_context 策略:

再次查看配置信息:

也已经生效,可以感觉出来和在 k8s 中几乎一样使用。

相关推荐
乌暮43 分钟前
Spring AOP 与 Spring 事务:用大白话彻底理解原理与实践
java·数据库·spring boot·后端·sql·学习·spring
YDS8291 小时前
Small Spring IOC篇:容器事件及其监听器
java·spring
北漂人Java2 小时前
基于 Spring AI Alibaba WorkFlow 构建 Java 生产级 AI Agent
java·人工智能·spring
liangbo75 小时前
Spring系列11:切点表达式
java·spring
budingxiaomoli19 小时前
Spring统一功能处理
java·后端·spring
fengkai45451 天前
Prometheus+K8s弹性伸缩综合项目
运维·kubernetes·k8s·prometheus·hpa·vpa
budingxiaomoli1 天前
Spring AOP
java·spring·java-ee
wang_shu_mo_ran2 天前
MyBatis 从入门到进阶(一)
java·spring·mybatis
东风微鸣2 天前
把 DeepSeek Harness 装进 K8s
kubernetes·deepseek·harness
瑞雪兆丰年兮2 天前
JavaWeb-day14-SpringBootWeb原理篇
java·开发语言·spring boot·spring·bean·mybatis·javaweb