当启用 dlv 远程调试时,kubectl 日志仅显示“API 服务器正在监听:[::]:40000” - 如何取回日志?

问题描述 投票:0回答:1

我目前有一个使用很多的 go 应用程序

fmt.printf
。每当该应用程序在 Pod 中运行时,我都可以通过执行以下操作来取回日志

kubectl logs podname

但是我还需要集成远程调试。我需要使用

dlv
来允许我的 ide(GoLand) 远程连接到 pod。它通过端口 40000 连接到 Pod。 此外,当 Pods 映像运行时,它会公开端口 40000,即 docker 文件中包含此端口 40000

我的 minikube 中也有类似这样的服务

apiVersion: v1
kind: Service
metadata:
  name: mydebug
spec:
  type: ClusterIP
  selector:
    app: fooapp
  ports:
  - protocol: TCP
    port: 40000
    targetPort: 40000
    name: delve

现在当我这样做时

kubectl logs podname
我只得到这个

API server listening at: [::]:40000
2022-10-30T21:18:57Z warning layer=rpc Listening for remote connections (connections are not authenticated nor encrypted)

有什么办法可以取回我的日志吗?何

docker go kubernetes kubectl delve
1个回答
1
投票

您可以使用

--continue
exec 标志,在启动时继续调试进程,这将导致持续的日志。

因此开始深入研究,例如与:

dlv --listen=:2345 --headless exec your/app --continue

如果没有

--continue
标志,delve 将等待远程连接并停止您的应用程序。使用
--continue
标志,应用程序将已经启动。

来自

dlv help exec

...
Usage:
  dlv exec <path/to/binary> [flags]

Flags:
      --continue     Continue the debugged process on start.
...
© www.soinside.com 2019 - 2024. All rights reserved.