在 Kind(docker 中的 Kubernetes)集群上的 pod 内调试 NodeJs 应用程序 运行

Debugging NodeJs app running inside pod on Kind (Kubernetes in docker) cluster

我正在 运行 设置一个 kubernetes 集群 Kind 配置如下:

kind: Cluster
apiVersion: kind.x-k8s.io/v1alpha4
nodes:
  - role: control-plane
    kubeadmConfigPatches:
      - |
        kind: InitConfiguration
        nodeRegistration:
          kubeletExtraArgs:
            node-labels: "ingress-ready=true"
    extraPortMappings:
      - containerPort: 80
        hostPort: ${ingress_http_port}
        protocol: TCP
      - containerPort: 443
        hostPort: ${ingress_https_port}
        protocol: TCP
networking:
  kubeProxyMode: "ipvs"

集群在 kind-control-plane docker 容器内 运行ning:

CONTAINER ID   IMAGE                  COMMAND                  CREATED        STATUS       PORTS                                                                 NAMES
53d9511b8282   kindest/node:v1.21.1   "/usr/local/bin/entr…"   5 hours ago    Up 5 hours   0.0.0.0:80->80/tcp, 0.0.0.0:443->443/tcp, 127.0.0.1:41393->6443/tcp   kind-control-plane

我还成功部署了一个部署 运行在 pod 中部署了一个 nodeJs 应用程序,并且我已经公开了一个服务以通过入口控制器访问该应用程序,并且一切都按预期工作:

apiVersion: v1
kind: Service
metadata:
  name: application-deployment
spec:
  ports:
    - name: http
      port: 3000
      protocol: TCP
  selector:
    app: application-deployment
---
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: application-deployment
spec:
  rules:
    - http:
        paths:
          - path: "/"
            pathType: Prefix
            backend:
              service:
                name: application-deployment
                port:
                  number: 3000

我正在使用 WebStorm IDE 在 pod 内开发应用程序 运行ning,我正在尝试配置远程调试器以连接到 Kind 集群内的应用程序。我知道如何在 docker 容器内配置调试器 运行ning 但我不知道如何在 docker 中的 kubernetes pod 运行ning 内配置调试器 运行 ]容器。

我已经尝试通过 WebStrom 使用以下设置对其进行配置:

这些是Docker容器设置标签下的设置:

如果有任何建议或解决方法可以实现此目的,我们将不胜感激。

提前致谢!

最后,我按照下面描述的步骤成功连接了远程调试器:

  1. 使用 --inspect-brk arg 在 pod 内启动节点进程,以便能够附加调试器。 (E.g. node --inspect-brk --loader ts-node/esm src/server.ts)
  2. 然后我通过 运行 命令 kubectl port-forward deploy/application-deployment 9229:9229
  3. 将调试端口从 pod 转发到我的本地计算机
  4. 最后,我在 WebStorm 上创建了一个 Attach to Node.js/Chrome run/debug 配置,而不是我在一开始一切都很顺利。

This 链接帮助我配置了所描述的解决方案。