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

如何在你的Kubernetes集群中调试Dapr sidecar(daprd)

概述

有时有必要了解 Dapr sidecar(daprd) 中发生了什么,它作为 sidecar 运行在您的应用程序旁边,尤其是当您诊断您的 Dapr 应用程序并想知道 Dapr 本身是否出了问题时。 此外,你可能正在为Kubernetes中的Dapr开发一个新功能,并且想调试你的代码。

本指南将涵盖如何使用内置的Dapr调试来调试您的 Kubernetes pod 中的 Dapr sidecar 。

前提

在调试模式下初始化 Dapr

如果您的Kubernetes集群中已经安装了Dapr,请先卸载它:

dapr uninstall -k

我们将使用"helm"来安装 Dapr 调试二进制文件。 了解更多信息,请参阅 使用 helm 安装

首先配置名为 values.yml 的文件。

global:
   registry: docker.io/<your docker.io id>
   tag: "dev-linux-amd64"

然后进入到"dapr"目录中,如果你没有这个目录,请参照本指南开始的说明,从GithHub中克隆下来。然后执行下面的命令:

helm install dapr charts/dapr --namespace dapr-system --values values.yml --wait

要启用 daprd 的调试模式,您需要在应用程序的部署文件中添加额外的注解 dapr.io/enable-debug 。 让我们以 quickstarts/hello-kubernetes 为例。 修改如下 ‘deploy/node.yaml’:

diff --git a/hello-kubernetes/deploy/node.yaml b/hello-kubernetes/deploy/node.yaml
index 23185a6..6cdb0ae 100644
--- a/hello-kubernetes/deploy/node.yaml
+++ b/hello-kubernetes/deploy/node.yaml
@@ -33,6 +33,7 @@ spec:
         dapr.io/enabled: "true"
         dapr.io/app-id: "nodeapp"
         dapr.io/app-port: "3000"
+        dapr.io/enable-debug: "true"
     spec:
       containers:
       - name: node

dapr.io/enable-debug 注解将提示Dapr注入器将Dapr sidecar注入到调试模式。 您也可以使用注解 dapr.io/debug-port指定调试端口,否则默认端口将是“40000”。

使用下面的命令来部署应用。 完整指南请参照 Dapr Kubernetes 快速入门

kubectl apply -f ./deploy/node.yaml

下面的命令显示目标应用程序的pod名称:

$ kubectl get pods

NAME                       READY   STATUS        RESTARTS   AGE
nodeapp-78866448f5-pqdtr   1/2     Running       0          14s

然后使用 kubectl 的 port-forward 命令将内部调试端口曝光到外部 IDE :

$ kubectl port-forward nodeapp-78866448f5-pqdtr 40000:40000

Forwarding from 127.0.0.1:40000 -> 40000
Forwarding from [::1]:40000 -> 40000

全部完成! 现在您可以从您喜欢的IDE中使用40000端口开启远程调试了。

相关链接