---
title: k8s集群中的springcloud架构如何丝滑的断点调试
description: 在测试阶段有时候为了定位一个问题，需要在本地启动服务，接入到测试环境，去debug问题。由于本地和kubernetes不在同一个网，所以需要借助VPN工具。kt-connect工具可以帮助实现了开发者本地运行的服务与Kubernetes集群中的服务之间的双向互通。
image: https://blog.advance.ai/hubfs/shutterstock_2248583149-1.jpg
---

[![wordmark-green-01-1](https://blog.advance.ai/hs-fs/hubfs/wordmark-green-01-1.png?width=446&height=54&name=wordmark-green-01-1.png "wordmark-green-01-1")](https://www.advanceai.com.cn/)

- 核心产品 
    - - AI 生物识别验证 
                  - [活体检测](https://www.advanceai.com.cn/liveness-detection)
                  - [人脸图像比对](https://www.advanceai.com.cn/face-comparison)
                  - [人脸搜索](https://www.advanceai.com.cn/face-search)
                  - [多维依据凭证人脸信用评分](https://www.advanceai.com.cn/facial-multi-loan-score)
          - AI 文档验证 
                  - [证件识别](https://www.advanceai.com.cn/id-document-recognition)
- 解决方案 
    - [数字身份验证](https://www.advanceai.com.cn/digital-identity-verification)
    - [视频身份验证](https://www.advanceai.com.cn/video-identification)
    - [更多部署方案](https://www.advanceai.com.cn/deployment-options)
- 行业应用 
    - [金融服务](https://www.advanceai.com.cn/financial-services)
    - [银行业](https://www.advanceai.com.cn/banking)
    - [旅游出行](https://www.advanceai.com.cn/travel)
    - [共享经济](https://www.advanceai.com.cn/sharing-economy)
    - [电子商务](https://www.advanceai.com.cn/e-commerce)
    - [金融科技](https://www.advanceai.com.cn/fintech)
- ADVANCE.AI研究 
    - [市场活动](https://www.advanceai.com.cn/events)
    - [白皮书和报告](https://www.advanceai.com.cn/whitepaper-reports_1)
    - [博客中心](https://www.advanceai.com.cn/blog)
- 关于我们 
    - [公司简介](https://www.advanceai.com.cn/about-advance-ai)
    - [安全团队](https://www.advanceai.com.cn/security-team)
    - [合作伙伴](https://www.advanceai.com.cn/partnership)
    - [新闻动态](https://www.advanceai.com.cn/company-news)
    - [加入我们](https://www.advanceai.com.cn/join-us)

- 核心产品 
    - 人工智能面部识别 
          - [活体检测](https://www.advance.ai/cn/liveness-detection)
          - [人脸图像比对](https://www.advance.ai/cn/face-comparison)
          - [人脸搜索](https://www.advance.ai/cn/face-search)
          - [欺诈人脸](https://www.advance.ai/cn/fraud-face)
          - [多维数据人脸信用评分](https://www.advance.ai/cn/facial-multi-loan-score)
    - 人工智能文件识别 
          - [证件识别](https://www.advance.ai/cn/id-document-recognition)
          - [身份证打码工具](https://www.advance.ai/cn/id-card-masking)
          - [证件打码](http://demo2019.test.yongsy.net/zhixinyin/index.html)
    - 人工智能文件处理 
          - [收据识别](https://www.advance.ai/cn/receipt-recognition)
          - [银行流水账单分析工具](https://www.advance.ai/cn/bank-statement-analyser)
    - 智慧零售货架识别 
          - [智慧零售](https://www.advance.ai/cn/smart-retailing)
- 解决方案 
    - [数字身份验证](https://www.advance.ai/cn/digital-identity-verification)
    - [视频身份验证](https://www.advance.ai/cn/video-identification)
    - [联合建模](https://www.advance.ai/cn/joint-modelling)
    - [更多部署方案](https://www.advance.ai/cn/deployment-options)
- 行业应用 
    - [金融服务](https://www.advance.ai/cn/financial-services)
    - [银行业](https://www.advance.ai/cn/banking)
    - [数字支付](https://www.advance.ai/cn/payment)
    - [医疗保健](https://www.advance.ai/cn/healthcare)
    - [旅游出行](https://www.advance.ai/cn/travel)
    - [共享经济](https://www.advance.ai/cn/sharing-economy)
    - [电子商务](https://www.advance.ai/cn/e-commerce)
    - [金融科技](https://www.advance.ai/cn/fintech)
    - [智慧物联](https://www.advance.ai/cn/internet-of-things)
- 领创研究 
    - [分享会](https://www.advance.ai/cn/events)
- 关于我们 
    - [公司简介](https://www.advance.ai/cn/about-advance-ai)
    - [安全团队](https://www.advance.ai/cn/security-team)
    - [新闻动态](https://www.advance.ai/cn/company-news)
    - [加入我们](https://www.advance.ai/cn/join-us)
    - [联系我们](https://www.advance.ai/cn/contact-us)

免费试用

中

- [EN](https://advance.ai/)

![](https://blog.advance.ai/hubfs/shutterstock_2248583149-1.jpg)

# k8s集群中的springcloud架构如何丝滑的断点调试

 Published by [Sample HubSpot User](https://blog.advance.ai/zh-cn/author/sample-hubspot-user) on  Nov 2, 2023, 11:02:07 AM

**作者：马铁强  职位：QA Lead**

**背景**

在测试阶段有时候为了定位一个问题，需要在本地启动服务，接入到测试环境，去debug问题。由于本地和kubernetes不在同一个网，所以需要借助VPN工具，下面介绍一个开源的Kubernetes环境测试联调工具 kt-connect ，可以让本地服务接入k8s集群，接收来自集群其他服务的请求，并且kt-connect还可以过滤请求header，让本地服务只接收特定的请求，而其他请求还是由集群中的服务处理。

 

## **1、kt-connect提供的功能**

kt-connect帮助实现了开发者本地运行的服务与Kubernetes集群中的服务之间的双向互通。主要包括下面几个功能：

 

**1.1 connect**

connect的作用是建立一个本地到集群的vpn，根据VPN原理，打通两个内网必然需要借助一个公共中继节点，因此connect会在k8s集群中创建一个shadow pod，用来提供ssh和dns服务。当运行connect命令时会为集群service建立临时dns配置。当ktctl connect命令退出时自动清理这些DNS配置，并销毁shadow pod。

**![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-48-14-8928-AM.png?width=866&height=646&name=image-png-Nov-02-2023-02-48-14-8928-AM.png)**

 

**1.2 exchange**

kt-connect提供了两种方式重定向集群流量到本地服务，exchange用shadow pod作为代理，将集群指定服务的所有流量转向本地。

**![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-49-35-0546-AM.png?width=759&height=305&name=image-png-Nov-02-2023-02-49-35-0546-AM.png)**

 

**1.3 mesh**

mesh和exchange一样，用Shadow Pod作为代理，根据路由规则重定向特定流量，实现多人协作场景下互不影响的本地调试。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-51-37-2510-AM.png?width=760&height=497&name=image-png-Nov-02-2023-02-51-37-2510-AM.png)

 

**1.4 preview**

preview的作用是，为一个开发中的新服务提供接入集群预览和调试的能力，意味着此时集群中还没有这个服务，所以preview命令只是简单地创建shadow pod，并使用用户指定的名称创建shadow service，访问shadow service的请求被自然地路由到本地指定端口。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-52-48-3444-AM.png?width=322&height=520&name=image-png-Nov-02-2023-02-52-48-3444-AM.png)

 

## 2、eureka的服务注册与发现

1. 注册中心：是一个eureka server，提供服务注册和服务发现功能
2. 生产者：是一个eureka client，它将自己提供的服务注册到注册中心，提供给消费者使用，注册时需要提供生产者的服务地址。
3. 消费者：也是一个eureka client，是一个注册服务的使用者，从服务注册中心获取服务列表，通过服务注册的IP地址以及其它服务注册信息调用所需的服务。

 

## 3、举个例子

目标：拦截集群中 credit-center 的请求，转发到本地启动的credit-center服务debug。

我们需要做一些准备工作：

**3.1 为 credit-center 创建一个对应的Service资源**

因为kt-connect是通过kubernetes的Service资源把请求重定向到本地服务，所以这个被debug的 credit-center 必须有一个Service资源。所以我们先在k8s测试环境创建一个名为guardian-credit-center-service的service。

![截屏2023-11-02 10.55.39](https://blog.advance.ai/hs-fs/hubfs/%E6%88%AA%E5%B1%8F2023-11-02%2010.55.39.png?width=1352&height=796&name=%E6%88%AA%E5%B1%8F2023-11-02%2010.55.39.png)

**3.2 用 credit-center ServiceIP注册eureka**

由于当前架构基于eureka作为注册中心，服务之间调用通过服务在eureka中注册的IP地址相互发送请求的。所以要保证部署到k8s集群的credit-center服务是用serviceIP注册的eureka，在credit-center的bootstrap.yaml文件中需要增加下面两项配置，指定注册到eureka的IP地址为上面创建的service名。如果不加这两个配置，这个credit-center服务默认使用容器的pod IP注册eureka。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-57-10-8117-AM.png?width=760&height=282&name=image-png-Nov-02-2023-02-57-10-8117-AM.png)

**3.3 准备kubeconfig文件**

kt-connet需要一个kubeconfig文件提供集群身份认证信息，所以要先准备一个k8s测试环境的kubeconfig文件，用于kt-connect与kubernetes集群建立连接，如果你用的是阿里云可以在集群控制台找到它，否则可以自己创建，此处不介绍创建kubeconfig文件过程了。

kubeconfig文件大概是这样的：

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-57-47-2053-AM.png?width=759&height=757&name=image-png-Nov-02-2023-02-57-47-2053-AM.png)

**3.4 kt-connect连接集群**

在启动本地服务之前首先要通过ktctl connect命令连接到k8s集群。使用ktctl connect命令时需要注意该命令需要管理员权限，并指定kubeconfig文件和命名空间。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-58-45-6233-AM.png?width=750&height=506&name=image-png-Nov-02-2023-02-58-45-6233-AM.png)

现在本地已经能够直接访问集群资源了，可通过浏览器或telnet命令来验证。

**3.5 启动本地服务**

启动本地服务之前，eureka.client.service-url.defaultZone配置k8s集群eureka的servicename。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-02-59-36-0275-AM.png?width=760&height=278&name=image-png-Nov-02-2023-02-59-36-0275-AM.png)

**3.6 转发集群所有流量**

用exchange命令将集群里访问credit-center服务的所有请求拦截并转发到本地的指定端口。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-03-00-10-8027-AM.png?width=760&height=690&name=image-png-Nov-02-2023-03-00-10-8027-AM.png)

**3.7 转发集群部分流量**

如果只是想特定的请求交给本地的debug服务处理，可以使用mesh命令，开启mesh模式时会生成一个header，发送测试请求时带上这个header就可以被转发到本地服务，实现多人协作场景下互不影响的本地调试。

![](https://blog.advance.ai/hs-fs/hubfs/image-png-Nov-02-2023-03-00-46-4220-AM.png?width=750&height=752&name=image-png-Nov-02-2023-03-00-46-4220-AM.png)

 

**4、结语**

其他类似的工具还有telepresence,两者的提供的核心能力类似，但telepresence不是完全开源，有部分功能需要付费使用。而kt-connect完全免费，可以随时让本地服务接入kubernetes测试集群进行断点debug，并且还能拦截特定请求、不受其他请求干扰。

 

 

 

 

[Back to Blog](https://blog.advance.ai/zh-cn)

## Related Articles

<https://blog.advance.ai/zh-cn/spring-gateway-route>

## [如何实现Spring Gateway路由的动态加载和刷新？](https://blog.advance.ai/zh-cn/spring-gateway-route)

 作者：陆永剑 职位：后端工程师

[Read More](https://blog.advance.ai/zh-cn/spring-gateway-route)

<https://blog.advance.ai/zh-cn/how-software-is-developed-and-delivered>

## [持续交付：改变软件开发和交付的方式](https://blog.advance.ai/zh-cn/how-software-is-developed-and-delivered)

 作者：杨岳彤 职位：架构师

[Read More](https://blog.advance.ai/zh-cn/how-software-is-developed-and-delivered)

<https://blog.advance.ai/zh-cn/use-json-schema-verify-json-data>

## [利用 JSON Schema 校验 JSON 数据](https://blog.advance.ai/zh-cn/use-json-schema-verify-json-data)

 作者：马铁强 职位：QA Lead

[Read More](https://blog.advance.ai/zh-cn/use-json-schema-verify-json-data)

[![wordmark-white-01](https://blog.advance.ai/hs-fs/hubfs/AAI%20logo/wordmark-white-01.png?width=3809&name=wordmark-white-01.png "wordmark-white-01")](http://demo2019.test.yongsy.net/zhixincn/index.html)

- 友情链接 
    - [领创集团](https://www.advancegroup.com.cn/)
- 核心产品 
    - [AI 生物识别验证](https://www.advanceai.com.cn/liveness-detection)
    - [AI 文档验证](https://www.advanceai.com.cn/id-document-recognition)
- 解决方案 
    - [星鉴解决方案](https://www.advanceai.com.cn/xingjian)
    - [视频身份验证](https://www.advanceai.com.cn/video-identification)
    - [更多部署方案](https://www.advanceai.com.cn/deployment-options)
- 行业应用 
    - [金融服务](https://www.advanceai.com.cn/financial-services)
    - [银行业](https://www.advanceai.com.cn/banking)
    - [旅游出行](https://www.advanceai.com.cn/travel)
    - [共享经济](https://www.advanceai.com.cn/sharing-economy)
    - [电子商务](https://www.advanceai.com.cn/e-commerce)
    - [金融科技](https://www.advanceai.com.cn/fintech)
- 关于我们 
    - [公司简介](https://www.advanceai.com.cn/about-advance-ai)
    - [安全团队](https://www.advanceai.com.cn/security-team)
    - [合作伙伴](https://www.advanceai.com.cn/partnership)
    - [新闻动态](https://www.advanceai.com.cn/company-news)
    - [加入我们](https://www.advanceai.com.cn/join-us)

© 2024 ADVANCE.AI. 请参阅领创智信的[服务条款](https://beta.advance.ai/terms-of-service)和[隐私和安全声明](https://beta.advance.ai/privacy-security-statement)

[![Contact Icon](https://blog.advance.ai/hs-fs/hubfs/raw_assets/public/AdvanceIntelligence_October2020/images/icon1.png?width=180&name=icon1.png "Contact Icon")](https://info.advance.ai/cn-free-trial)

[![Message Icon](https://blog.advance.ai/hs-fs/hubfs/raw_assets/public/AdvanceIntelligence_October2020/images/icon2.png?width=180&name=icon2.png "Message Icon")](https://info.advance.ai/zh-cn/advance.ai-lianxiwomen)

![Back To Top](https://blog.advance.ai/hubfs/raw_assets/public/AdvanceIntelligence_October2020/images/icon4.png)