我尝试使用主机@include('emails.table', [
__('order.reference') => $order->reference,
__('order.total') => @price($order->total),
])
和端口192.168.99.100
以附加模式远程调试应用程序,但是它告诉我它是5005
。 IP为unable to open the debugger port
(集群通过minikube在本地托管)。
192.268.99.100
的输出
kubectl describe service catalogservice
这是pods service.yml:
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>
在这里,我暴露了容器端口
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
我构建图像的方式:
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
答案 0 :(得分:3)
除了在request.PATH_INFO
中使用NodePort
之外,还可以使用kubectl port-forward
访问Service
中的调试端口。
Pod
允许使用资源名称(例如Pod名称)来选择匹配的Pod,以将其移植到Kubernetes v1.10以后的版本。
您需要在Pod的Deployment Yaml中公开调试端口
kubectl port-forward
然后通过获取您的Pod的名称
spec:
containers:
...
ports:
...
- containerPort: 5005
,然后向该Pod添加端口转发
kubectl get pods
在IntelliJ中,您将可以连接到
主持人:kubectl port-forward podname 5005:5005
端口:localhost
答案 1 :(得分:1)
或者,您可以使用Code Cloud Intellij插件。
另外,如果您使用Fabric8,它会提供fabric8:debug
目标。
答案 2 :(得分:0)
您最初发布为的Yaml出现了滑动:
- containerPort: 5050
name: debug
应该是:
- containerPort: 5005
name: debug
在配置IntelliJ调试器时,您还需要使用32003
的外部端口。通过这些更改,它应该可以工作。
您可能还想考虑如何使其更加灵活。在过去的when I've done this中,我使用了一个不同的form for the docker start command,它允许您通过一个名为REMOTE_DEBUG
的环境变量来打开和关闭远程调试,对于您来说,它是:
CMD if [ "x$REMOTE_DEBUG" = "xfalse" ] ; then java $JAVA_OPTS -jar catalogservice-0.0.1-SNAPSHOT.jar ; else java $JAVA_OPTS -agentlib:jdwp=transport=dt_socket,address=5005,server=y,suspend=n -jar catalogservice-0.0.1-SNAPSHOT.jar ; fi
您可能会发现自己想set the env var $JAVA_OPTS
来限制JVM内存的使用以避免issues in k8s。