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 中几乎一样使用。

相关推荐
wenyue11212 小时前
Enhancing K8s Gateway API with Easegress Without Changing a Single Line of Code
容器·kubernetes·gateway
AskHarries3 小时前
Spring Cloud Consul实现选举机制
java·后端·spring cloud·consul
jakeswang3 小时前
spring循环依赖以及MyBatis-Plus的继承特性导致循环依赖自动解决失效
java·spring·mybatis
扬子鳄0088 小时前
Spring集成测试
java·spring·集成测试
码蜂窝编程官方9 小时前
【含开题报告+文档+PPT+源码】基于SSM的电影数据挖掘与分析可视化系统设计与实现
java·vue.js·人工智能·后端·spring·数据挖掘·maven
sxy1993sxy201810 小时前
k8s rainbond centos7/win10 -20241124
云原生·容器·kubernetes
小扳10 小时前
Web 毕设篇-适合小白、初级入门练手的 Spring Boot Web 毕业设计项目:电影院后台管理系统(前后端源码 + 数据库 sql 脚本)
java·前端·数据库·spring boot·mysql·spring·课程设计
吃一克鹅蛋10 小时前
Spring 框架环境搭建
java·后端·spring
as_jopo13 小时前
-Dspring.profiles.active=dev与--spring.profiles.active=dev的区别
java·后端·spring
fa_lsyk13 小时前
Spring:AOP面向切面案例讲解AOP核心概念
java·后端·spring