在 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容器设置标签下的设置:
如果有任何建议或解决方法可以实现此目的,我们将不胜感激。
提前致谢!
最后,我按照下面描述的步骤成功连接了远程调试器:
- 使用
--inspect-brk
arg 在 pod 内启动节点进程,以便能够附加调试器。 (E.g. node --inspect-brk --loader ts-node/esm src/server.ts
)
- 然后我通过 运行 命令
kubectl port-forward deploy/application-deployment 9229:9229
将调试端口从 pod 转发到我的本地计算机
- 最后,我在 WebStorm 上创建了一个 Attach to Node.js/Chrome run/debug 配置,而不是我在一开始一切都很顺利。
This 链接帮助我配置了所描述的解决方案。
我正在 运行 设置一个 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容器设置标签下的设置:
如果有任何建议或解决方法可以实现此目的,我们将不胜感激。
提前致谢!
最后,我按照下面描述的步骤成功连接了远程调试器:
- 使用
--inspect-brk
arg 在 pod 内启动节点进程,以便能够附加调试器。 (E.g. node --inspect-brk --loader ts-node/esm src/server.ts
) - 然后我通过 运行 命令
kubectl port-forward deploy/application-deployment 9229:9229
将调试端口从 pod 转发到我的本地计算机
- 最后,我在 WebStorm 上创建了一个 Attach to Node.js/Chrome run/debug 配置,而不是我在一开始一切都很顺利。
This 链接帮助我配置了所描述的解决方案。