The documentation you are viewing is for Dapr v1.2 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端口开启远程调试了。