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

相关推荐
code_slave(码畜)26 分钟前
微服务架构落地:公共中间件层总览——不承载业务,只承载稳定性
spring boot·spring cloud·微服务·中间件·架构
萧瑟余晖2 小时前
Spring 事务管理与数据访问详解
spring
萧瑟余晖7 小时前
Spring 事件机制与条件装配详解
spring
Wx-bishekaifayuan8 小时前
springboot陨石鉴收系统96265-计算机课程设计、毕业设计
java·vue.js·spring boot·后端·python·spring·课程设计
Thomas.Sir8 小时前
第13课:Spring Cloud LoadBalancer 新版负载均衡核心原理
spring cloud·负载均衡
code_slave(码畜)8 小时前
微服务架构落地:基础服务 —— 报表服务(上篇:定位、边界与整体架构)
java·spring boot·spring cloud·微服务·架构
小匠石钧知9 小时前
06_在k8s集群中安装MetalLB实现LoadBalancer
云原生·容器·kubernetes·service·loadbalancer·metallb
x-Achan9 小时前
Redis实现方案:更新策略、穿透、雪崩、击穿、工具封装
java·spring boot·redis·spring·bootstrap·mybatis
步行cgn20 小时前
Spring 全注解开发详解
java·后端·spring
Thomas.Sir1 天前
第12课:Nacos 配置加密、版本回溯、配置监听 & 生产风控方案
spring cloud·nacos