繁体   English   中英

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

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

我正在运行一个配置了Kind的 kube.netes 集群,如下所示:

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 容器中运行:

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 应用程序的部署,并且我已经公开了一个服务以通过入口 controller 访问该应用程序,一切都按预期进行:

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 内运行的应用程序,并且我正在尝试配置远程调试器以连接到 Kind 集群内的应用程序。 我知道如何配置在 docker 容器中运行的调试器,但我不知道如何在 docker 容器中运行的 kube.netes pod 中运行调试器。

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

在此处输入图像描述

这些是Docker容器设置label下的设置:

在此处输入图像描述

任何为了实现这一点的建议或变通办法都将不胜感激。

先感谢您!

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

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

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

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM