ARTICLE · INTELLIGENCE

战地情报 · 详情页

来自尧图项目组的一线实战观察与深度解析

Spring Cloud Kubernetes 本地开发环境调试

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

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的版本:

kubectl version--client--output=yaml

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

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

ktctl-v

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

ktctl connect

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

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

kubectl edit configmap consumerconfig-ncloud

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

再次查看配置信息:

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

RELATED READING

延伸阅读

更多一线实战笔记与深度复盘,助您持续精进