Spring Cloud Kubernetes 本地开发环境调试

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

上面文章使用 Spring Cloud Kubernetesk8s 环境中实现了服务注册发现、服务动态配置,但是需要放在 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.serverk8s 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 IPService域名)
  • Exchange:让集群服务流量重定向到本地,实现快速验证本地版本和调试排查问题
  • Mesh:创建路由规则重定向特定流量,实现多人协作场景下互不影响的本地调试
  • Preview:暴露本地服务到集群,实现无需发布即可在线预览集成效果

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

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

下载后,解压可以看到 ktctl.exewintun.dll

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

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

shell 复制代码
ktctl -v

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

shell 复制代码
ktctl connect

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

shell 复制代码
kubectl get pods

五、本地环境调试

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

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

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

本地 IDEA 启动服务消费者,启动时,指定环境变量 KUBERNETES_NAMESPACEk8s 部署服务的命名空间,上篇文章中我们使用的 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 中几乎一样使用。

相关推荐
Mr.朱鹏5 小时前
针对Feign客户端请求体参数处理问题
java·jvm·spring boot·spring·spring cloud·maven·intellij-idea
涛粒子7 小时前
Spring Bean 生命周期的执行流程
java·后端·spring
quo-te8 小时前
【无标题】
java·spring·maven·mybatis·idea
_周游8 小时前
【Spring+MyBatis】_图书管理系统(上篇)
spring·oracle·mybatis
Xwzzz_11 小时前
Spring Cloud Gateway中断言路由和过滤器的使用
java·spring cloud·gateway
@明明不知道11 小时前
spring cloud 微服务部署(2025年)第一章:Nacos、LoadBalancer、GateWay、Ribbon集成之Nacos部署
spring cloud·微服务·nacos·gateway·loadbalancer
大龄码农有梦想12 小时前
Springboot集成Spring AI和Milvus,验证RAG构建过程
人工智能·spring boot·spring·milvus·知识库·rag·spring ai
liulanba14 小时前
八股取士--docker&k8s
docker·容器·kubernetes
桂月二二15 小时前
基于eBPF的云原生网络加速引擎:突破Kubernetes Service转发性能瓶颈
网络·云原生·kubernetes
caihuayuan416 小时前
mysql多主集群 galera cluster for mysql 8安装配置启动重启集群
java·大数据·sql·spring