The documentation you are viewing is for Dapr v1.5 which is an older version of Dapr. For up-to-date documentation, see the latest version.
Kubernetes中的Dapr调试面板
概述
有时候,我们需要知道在Dapr控制面板中发生了什么(aka. Kubernetes服务),包括 dapr-sidecar-injector
, dapr-operator
, dapr-placement
, and dapr-sentry
,特别是当你诊断你的Dapr应用时想要知道是不是Dapr自身存在什么错误。 此外,你可能正在为Kubernetes中的Dapr开发一个新功能,并且想调试你的代码。
这份指南将展示在Kubernetes集群中如何使用Dapr调试二进制文件对Dapr服务进行调试。
调试Dapr Kubernetes服务
前提
1. 构建Dapr调试二进制文件
为了调试 Dapr Kubernetes 服务,需要重新构建所有的Dapr 二进制文件 和 Docker 镜像来禁用编译器优化。 要做到这一点,请运行以下命令:
git clone https://github.com/dapr/dapr.git
cd dapr
make release GOOS=linux GOARCH=amd64 DEBUG=1
Windows:下载 MingGW ,并使用
ming32-make.exe
而不是make
。
在上述命令中,“DEBUG”设定为“1”可禁用编译器优化。 ‘GOOS=linux’ 和 ‘GOARCH=amd64’ 也是必要的,因为二进制文件将在下一步中打包到基于 Linux 的Docker图像。
可以在“dapr”目录下的’dist/linux_amd64/debug’子目录下找到二进制文件。
2. 构建Dapr调试Docker镜像
使用下面的命令将调试二进制文件打包成Docker镜像。 在此之前,你需要登录到你的docker账号,如果还没有docker账号,可以在"https://hub.docker.com/“中注册。
export DAPR_TAG=dev
export DAPR_REGISTRY=<your docker.io id>
docker login
make docker-push DEBUG=1
一旦Dapr镜像构建完成并推送到Docker hub中,你就已经做好了在你的Kubernetes中重新安装Dapr的准备。
3. 安装Dapr调试二进制文件
如果您的Kubernetes集群中已经安装了Dapr,请先卸载它:
dapr uninstall -k
我们将使用"helm"来安装 Dapr 调试二进制文件。 接下来的章节,我们将使用Dapr Operator来演示在Kubernetes环境中如何配置、安装和调试Dapr服务。
首先配置名为 values.yml
的文件。
global:
registry: docker.io/<your docker.io id>
tag: "dev-linux-amd64"
dapr_operator:
debug:
enabled: true
initialDelaySeconds: 3000
Notice
如果你需要调试Dapr服务的启动阶段, 可以将配置中的initialDelaySeconds
设定到一个很长的时间值,例如:“3000” 秒。 除此之外的情况,请将其配置为一个短时间值,如:“3"秒。
然后进入到"dapr"目录中,如果你没有这个目录,请参照本指南开始的说明,从GithHub中克隆下来。然后执行下面的命令:
helm install dapr charts/dapr --namespace dapr-system --values values.yml --wait
4. 转发调试端口
要调试目标 Dapr 服务 (在这种情况下为 Dapr Operator),其预配置的调试端口需要是对你的 IDE 可见。 为了做到这一点,我们需要首先找到目标Dapr服务的节点:
$ kubectl get pods -n dapr-system -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
dapr-dashboard-64b46f98b6-dl2n9 1/1 Running 0 61s 172.17.0.9 minikube <none> <none>
dapr-operator-7878f94fcd-6bfx9 1/1 Running 1 61s 172.17.0.7 minikube <none> <none>
dapr-placement-server-0 1/1 Running 1 61s 172.17.0.8 minikube <none> <none>
dapr-sentry-68c7d4c7df-sc47x 1/1 Running 0 61s 172.17.0.6 minikube <none> <none>
dapr-sidecar-injector-56c8f489bb-t2st9 1/1 Running 0 61s 172.17.0.10 minikube <none> <none>
然后使用 kubectl 的 port-forward
命令将内部调试端口曝光到外部 IDE :
$ kubectl port-forward dapr-operator-7878f94fcd-6bfx9 40000:40000 -n dapr-system
Forwarding from 127.0.0.1:40000 -> 40000
Forwarding from [::1]:40000 -> 40000
全部完成! 现在您可以从您喜欢的IDE中使用40000端口开启远程调试了。
相关链接
Feedback
Was this page helpful?
Glad to hear it! Please tell us how we can improve.
Sorry to hear that. Please tell us how we can improve.