SpringBoot通过kt-connect+kubectl进行本地调试k8s服务
前言
本地服务a想调用k8s里的服务b,但是本地a和b网络不互通,调用的时候会报连接超时。
这时候我们就可以通过kt-connect+kubectl进行代理访问k8s服务里的b。这样就可以本地调试生产环境的bug了。
以windows为例
下载kubectl
《下载kubectl》
搜索client-windows进行下载
解压kubectl
下载kt-connect
《进入到kt-connect官网》
解压,然后把压缩包里的全部文件放到kubectl.exe的同级目录下
配置环境变量
win + R运行cmd
检查kubectl是否正常
kubectl version检查ktctl是否正常
ktctl--version配置ktctl访问k8s内部网络
Rancher下载配置文件KubeConfig
在用户目录下创建.kube文件夹
在.kube创建config文件
内容为你下载的KubeConfig
亦或是把你下载的KubeConfig放到.kube目录下,如下所示:
ktctl连接k8s网络
–kubeconfig就是我们从rancher上面下载的KubeConfig配置文件
–namespace就是我们k8s服务所在的命名空间
–image就是下载的kt-connect-shadow镜像到私有harbor镜像仓库
需要管理员运行cmd
ktctl--kubeconfig=C:\Users\X\.kube\hihisprod.yaml--namespace=prod--image=myharbor.com/ops-docker/kt-connect-shadow:v0.3.7--dnsMode=hosts connect出现以下内容即为连接成功
All looks good,now you can access to resources in the kubernetes cluster
查看rancher上面是否启动成功
本地启动SpringBoot即可进行访问k8s的其它服务
properties或yml文件不能配置"${xxx.xxx}"这种无法在本地访问的内容,
如果rancher上面配置的就是这种,则需要改为具体的值。
spring:application:name:appapp:#这种可以name:${spring.application.name}#这种不行,因为在本地服务找不到name2:${name2}注意事项
下面这个ktctl命令提示符窗口不能关闭
内网k8s无法拉取阿里云的kt-connect-shadow
安装docker-desktop,然后执行以下命令,拉取镜像以后,推送到内网harbor私有docker镜像仓库即可。
docker pull registry.cn-hangzhou.aliyuncs.com/rdc-incubator/kt-connect-shadow:v0.3.7Windows 加管理员权限启动bat脚本
kubeconfig文件改成你自己rancher上面的yaml文件
namespace改成你自己rancher上面的命名空间
image改成你自己harbor上面存放的kt-connect-shadow
@echo off :: 检查管理员权限 fltmc>nul2>&1||(echorequest admin privileges... PowerShell Start-Process-FilePath"%0"-VerbRunAsexit/b)ktctl--kubeconfig=C:/Users/x/.kube/hihisprod.yaml--namespace=prod--image=harbor.bsoft.com.cn:5000/ops-docker/kt-connect-shadow:v0.3.7--dnsMode=hosts connect