我知道你可以用Telepresence来调试java微服务。Scala运行在JVM上,所以它不应该是一个问题,对吗?但出于某种原因我没能做到。
我跟随youtube上的这段视频学习了一篇远程在场教程。
我截获了我想要调试的服务。它给Kafka和mariadb(mysql)带来了一些错误。因此,在IntelliJ中,我根据它们在AKS上的属性更改了它们的配置,比如host = "kafka.default:9092",因为它的名称空间是默认的,名称是kafka,端口是9092。Kafka和Mysql似乎都是连接在一起的,目前它们没有出现任何错误。
在IntelliJ中,我调用一个Boot.scala类,根据我的理解,它读取配置并构建项目。当我在本地application.conf中将该服务的端口更改为80时(就像在AKS中一样),它会给出以下错误。在任何其他端口,它只听。
I|2022-07-13 15:41:00,893|c.a.libats.http.tracing.Tracing$|Request tracing disabled in config
E|2022-07-13 15:41:01,901|akka.io.TcpListener|Bind failed for TCP channel on endpoint [/0.0.0.0:80]当我用Telepresence截取这个服务时,网站上的获取过程还没有结束。我几乎在任何地方都有断点,我总是调试这个项目,它从来没有碰到其中的任何一个。到底是怎么回事?此外,我是开放的,在远程调试AKS重定向。
PS:这个项目是我继承的,我以前没有scala的经验。所以我可能错过了一些简单的东西。
PS2:当我离开远程存在截取并只在本地运行时,没有什么变化。相同的日志,80个端口的相同情况。
发布于 2022-07-17 23:51:21
好吧,很管用。只需添加远程存在,它将拦截吊舱并附加到您的本地应用程序,而不是运行在吊舱上的代码。因此,您必须相应地进行配置,因为这将是运行在吊舱内的代码。只是不要使用端口80,因为它是为HTTP 保留的,即使是,当您"kubectl get svc -A“时,它说端口为80。只需在不指定端口的情况下使用telepresence intercept nameoftheservice,它将代替您,并在本地环境配置中相应地更改端口。
https://stackoverflow.com/questions/72969233
复制相似问题