当前位置: 首页 > 知识库问答 >
问题:

调试在 Pod on Kind(Docker 中的库伯内特)集群内运行的 NodeJs 应用程序

禄和宜
2023-03-14

我正在运行一个kubernetes集群,其配置如下所示:

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

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容器中运行的kubernetes pod中运行调试器。

我已经尝试通过WebStrom用下面的设置来配置它:

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

任何建议或解决方法来实现这一点将不胜感激。

提前感谢您!

共有1个答案

郎灿
2023-03-14

最后,我通过以下步骤连接远程调试器:

    < li >使用< code> - inspect-brkhtml" target="_blank">参数启动pod内的节点进程,以便能够附加调试器。(< code >例如node-inspect-brk-loader ts-node/ESM src/server . ts ) < li >然后,我通过运行命令< code > kubectl port-forward deploy/application-deployment 9229:9229 将调试端口从pod转发到我的本地计算机 < li >最后,我在WebStorm上创建了一个附加到Node.js/Chrome的运行/调试配置,而不是Node.js配置,因为我一开始就尝试了,一切都很顺利。

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

 类似资料:
  • 我正在尝试让cadence在kubernetes集群上运行。然而,我注意到Cadence服务器初始化中有一个bug,它阻止Cassandra脚本正确初始化模式。https://github.com/uber/cadence/issues/1713:所以我想我会手动完成这一步。我执行了以下步骤- < li >在docker compose上从https://raw . githubuserconte

  • 我假设没有愚蠢的问题,所以这里有一个我找不到直接答案的问题。 现在的情况 我目前有一个运行1.15的Kubernetes集群。AKS上的x,通过Terraform部署和管理。AKS最近宣布Azure将在AKS上停用Kubernetes的1.15版本,我需要将集群升级到1.16或更高版本。现在,据我所知,直接在Azure中升级集群不会对集群的内容产生任何影响,即节点、豆荚、秘密和当前在那里的所有其他

  • 我有一个部署在远程Kubernetes集群上的Flink SessionCluster(根据文档),可在

  • 我正在尝试配置一个2节点库伯内特斯集群。首先,我试图在CentOS虚拟机上配置集群的主节点。我已经使用“kubeadm init--apiserver-广告地址=172.16.100.6--pod-network-cidr=10.244.0.0/16”初始化了集群,并将法兰绒网络部署到集群中。但是当我执行“kubectl获取节点”时,我得到以下输出---- 下面是“kubectl get pods

  • 我一直在努力让DNS插件在CentOS 7.2集群上工作。我使用以下说明安装了群集:http://severalnines.com/blog/installing-kubernetes-cluster-minions-centos7-manage-pods-services 在此配置中,主服务器正在运行:etcd、库贝-调度器、库贝-apiserver和库贝-控制器-管理器。这些节点正在运行:do