Spring Cloud Kubernetes 本地开发环境调试

ops/2025/2/22 22:37:58/

一、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 节点中:

cd ~/.kubell

在这里插入图片描述
config 文件复制出来放到本机电脑的 C:\Users\{你的用户名}\.kube 目录下。

在这里插入图片描述

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

在这里插入图片描述

三、部署 kubectl 工具

下载 kubectl

https://dl.k8s.io/release/v1.30.0/bin/windows/amd64/kubectl.exe

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

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

kubectl version --client --output=yaml

在这里插入图片描述

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

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 窗口,查看版本,验证是否正常:

ktctl -v

在这里插入图片描述

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

ktctl connect

在这里插入图片描述

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

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 中的配置文件:

kubectl edit configmap consumerconfig -n cloud

在这里插入图片描述

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

在这里插入图片描述

再次查看配置信息:

在这里插入图片描述

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


http://www.ppmy.cn/ops/27609.html

相关文章

【网络基础】深入理解TCP协议:协议段、可靠性、各种机制

文章目录 1. TCP协议段格式1.1. 如何解包 / 向上交付1.1.1. 交付1.1.2. 解包 1.2. 如何理解可靠性1.2.1. 确认应答机制(ACK)1.2.2. 序号 与 确认序号 2. TCP做到全双工的原因2.1. 16位窗口大小2.2. 6个标记位 3. 如何理解连接3.1 连接管理机制3.1.1. 三次…

计算机英文论文常见错误写作习惯3

目录 第一部分 Numbers and Equations ‘such as’ and ‘etc.’ 第二部分 第一部分 Numbers and Equations 两个非常常见的错误是关于阿拉伯数字和方程式的表示。中国作家通常写阿拉伯数字,而不是拼出单词。然而,使用阿拉伯数字本身并不是一个错误…

【研发管理】产品经理知识体系-产品设计与开发工具

导读:产品设计与开发工具的重要性体现在多个方面,它们对于产品的成功开发、质量提升以及市场竞争力都具有至关重要的影响。产品设计工具可以帮助设计师更高效地创建和优化产品原型。开发工具在产品开发过程中发挥着至关重要的作用。产品设计与开发工具还…

鸿蒙launcher浅析

鸿蒙launcher浅析 鸿蒙launcher源码下载鸿蒙launcher模块launcher和普通的应用ui展示的区别 鸿蒙launcher源码下载 下载地址如下: https://gitee.com/openharmony/applications_launcher 鸿蒙launcher模块 下载页面已经有相关文件结构的介绍了 使用鸿蒙编辑器D…

【Elasticsearch<三>✈️✈️】常见基本属性的用法以及与MySQL的区别

目录 🍸前言 🍻一、索引 1.1 映射关系 (mappings) 1.2 映射关系查看 🍺二、文档 2.1 删除文档 2.2 更新文档 2.3 批量操作 🍹三、高级查询(Query 检索) 🍷四、章末 🍸前言 继本…

Linux--环境变量

目录 命令行参数 认识环境变量 环境变量的特性及命令行操作 命令行参数 在介绍环境变量之前,我们先来理解一下命令行参数,因为命令行参数与环境变量的构成是非常相似的。在这里我们以main函数为例: 下面是一段代码: 运行结果&am…

基于FPGA的数字信号处理(5)--Signed的本质和作用

前言 Verilog中的signed是一个很多人用不好,或者说不太愿意用的一个语法。因为不熟悉它的机制,所以经常会导致运算结果莫名奇妙地出错。其实了解了signed以后,很多时候用起来还是挺方便的。 signed的使用方法主要有两种,其中一种…

AI开发的基本流程是什么?

确定目的 在开始AI开发之前,必须明确要分析什么?要解决什么问题?商业目的是什么?基于商业的理解,整理AI开发框架和思路。例如,图像分类、物体检测等等。不同的项目对数据的要求,使用的AI开发手…