KtConnect-基于k8s的开发者工具

发布时间 2024-01-07 16:44:09作者: 言午日尧耳总

解决官网无法访问

结合SpringCloud

Nacos注册/发现服务路由问题

  • 如果是使用Nacos作为注册/发现服务时,路由可能出现问题
  • 服务注册到Nacos的时候,会将集群IP注册为服务的IP
  • 服务相互调用会直接使用该IP相互访问,而不是通过k8s的Service(例如:gateway)
  • 解决方法:注册Nacos时将IP参数设置为服务名
spring:
  application:
    name: my-app
  cloud:
    nacos:
      server-addr: http://127.0.0.1:8848
      discovery:
        namespace: default
        ip: ${spring.application.name} # 将IP设置为服务名,可以写死,也可以动态获取
# ...略

OpenFeign调用问题

  • 微服务相互调用有些人是使用OpenFeign实现
  • 如果使用了"ktctl mesh"命令,下游服务会丢失请求头
  • 解决方法:配置OpenFeign拦截器,透传请求头
@Configuration
public class FeignConfig {
    @Bean
    public RequestInterceptor requestInterceptor() {
        return requestTemplate -> {
            ServletRequestAttributes attributes = (ServletRequestAttributes) RequestContextHolder.getRequestAttributes();
            if (attributes != null) {
                // 原始请求
                HttpServletRequest request = attributes.getRequest();
                String version = request.getHeader("VERSION");

                // Feign请求增加头
                requestTemplate.header("VERSION", version);
            }
        };
    }
}

Windows问题

浏览器无法访问

  • 使用"ktctl connect"连接到集群后,浏览器无法通过服务名访问
  • 部分Windows系统需要手动代理SOCKS5(ktctl connect实现原理)
    • 目前使用来看,Windows11需要手动代理,Windows10不需要设置
  • Edge浏览器直接在扩展商店搜索并安装"Proxy SwitchyOmega"
    • 新建情景模式: SOCKS5(任意名字)
    • 代理协议: SOCKS5
    • 代理服务器: 127.0.0.1
    • 代理端口: 2223
    • 设置好之后记得保存
  • 窗口访问时,将代理切换到刚才新建的情景模式,刷新即可访问
  • 使用完毕后记得切换回来,否则其他地址无法正常访问

其他

报错"KUBENETES_MASTER"

  • 找不到k8s配置文件,设置"--kubeconfig"参数即可
  • 一般配置文件路径是"~/.kube/config"