本文介绍了使用intellij的kubernetes中的远程调试容器的处理方法,对大家解决问题具有一定的参考价值,需要的朋友们下面随着小编来一起学习吧!

问题描述

我尝试使用主机192.168.99.100和端口5005在附加模式下远程调试应用程序,但它告诉我它是unable to open the debugger port. IP为192.268.99.100(群集通过minikube在本地托管).

I try to remote debug the application in attached mode with host: 192.168.99.100 and port 5005, but it tells me that it is unable to open the debugger port. The IP is 192.268.99.100 (the cluster is hosted locally via minikube).

kubectl describe service catalogservice

Name:                     catalogservice
Namespace:                default
Labels:                   <none>
Annotations:              <none>
Selector:                 app=catalogservice
Type:                     NodePort
IP:                       10.98.238.198
Port:                     web  31003/TCP
TargetPort:               8080/TCP
NodePort:                 web  31003/TCP
Endpoints:                172.17.0.6:8080
Port:                     debug  5005/TCP
TargetPort:               5005/TCP
NodePort:                 debug  32003/TCP
Endpoints:                172.17.0.6:5005
Session Affinity:         None
External Traffic Policy:  Cluster
Events:                   <none>

这是pods service.yml:

This is the pods service.yml:

apiVersion: v1
kind: Service
metadata:
  name: catalogservice
spec:
  type: NodePort
  selector:
    app: catalogservice
  ports:
  - name: web
    protocol: TCP
    port: 31003
    nodePort: 31003
    targetPort: 8080
  - name: debug
    protocol: TCP 
    port: 5005
    nodePort: 32003
    targetPort: 5005

在这里,我暴露了容器端口

And in here I expose the containers port

spec:
  containers:
  - name: catalogservice
    image: elps/myimage
    ports:
    - containerPort: 8080
      name: app
    - containerPort: 5005
      name: debug

我构建图像的方式:

FROM openjdk:11
VOLUME /tmp
EXPOSE 8082
ADD /target/catalogservice-0.0.1-SNAPSHOT.jar catalogservice-0.0.1-SNAPSHOT.jar
ENTRYPOINT ["java", "-agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n", "-jar", "catalogservice-0.0.1-SNAPSHOT.jar"]

当我执行nmap -p 5005 192.168.99.100时我会收到

PORT     STATE  SERVICE
5005/tcp closed avt-profile-2

当我执行nmap -p 32003 192.168.99.100时,我会收到

PORT     STATE  SERVICE
32003/tcp closed unknown

当我执行nmap -p 31003 192.168.99.100时,我会收到

PORT     STATE  SERVICE
31003/tcp open unknown

当我执行kubectl get services时,我会收到

NAME              TYPE        CLUSTER-IP       EXTERNAL-IP   PORT(S)                          AGE
catalogservice    NodePort    10.108.195.102   <none>        31003:31003/TCP,5005:32003/TCP   14m

minikube service customerservice --url返回

http://192.168.99.100:32004

推荐答案

作为在Service中使用NodePort的替代方法,您还可以使用 kubectl port-forward 访问Pod中的调试端口.

As an alternative to using a NodePort in a Service you could also use kubectl port-forward to access the debug port in your Pod.

您需要在Pod的Deployment Yaml中公开调试端口

You need to expose the debug port in the Deployment yaml for the Pod

spec:
  containers:
    ...
    ports:
      ...
      - containerPort: 5005

然后通过获取您的Pod的名称

Then get the name of your Pod via

kubectl get pods

,然后向该Pod添加端口转发

and then add a port-forwarding to that Pod

kubectl port-forward podname 5005:5005

在IntelliJ中,您将可以连接到

In IntelliJ you will be able to connect to

主持人:localhost

端口:5005

这篇关于使用intellij的kubernetes中的远程调试容器的文章就介绍到这了,希望我们推荐的答案对大家有所帮助,也希望大家多多支持!

10-18 19:01