The documentation you are viewing is for Dapr v1.3 which is an older version of Dapr. For up-to-date documentation, see the latest version.

Kubernetes中的Dapr调试面板

在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

然后进入到"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端口开启远程调试了。

相关链接