You need to enable JavaScript to run this app.
最新活动
大模型
产品
解决方案
定价
生态与合作
支持与服务
开发者
了解我们

如何通过Traits配置Camel K项目暴露UDP端口(4739)以实现外部访问

如何从容器外部访问Camel K的4739端口?

你的问题出在没有显式配置Service要映射的非HTTP端口——Camel K的Service trait默认只会自动处理HTTP服务的端口映射,而你的场景是用Netty/Syslog的4739端口(属于非HTTP协议),所以需要手动指定端口映射规则。

试试这个完整的运行命令:

kamel run --trait container.enabled=true --trait container.expose=true --trait container.port=4739 \
--trait service.enabled=true --trait service.node-port=true \
--trait service.ports[0].port=4739 --trait service.ports[0].target-port=4739 \
SyslogBasic.java --dev

关键参数说明:

  • container.port=4739:将容器内部的4739端口暴露给Pod
  • service.ports[0].port=4739:Service对外暴露的端口(可自定义,这里和容器端口保持一致更直观)
  • service.ports[0].target-port=4739:把Service的端口关联到容器的4739端口
  • service.node-port=true:将Service设置为NodePort类型,允许从Kubernetes集群外部通过「节点IP+分配的NodePort」访问

验证配置是否生效:

  1. 执行命令后,运行kamel describe integration syslog-basic,检查ServiceAvailable状态是否变为正常
  2. kubectl get service syslog-basic -n camel-basic查看系统分配的NodePort(通常是30000-32767之间的端口)
  3. 从集群外部访问你的节点IP:分配的NodePort,就能将数据发送到Camel K的4739端口了

之前的命令之所以无效,是因为只开启了Service的NodePort模式,但没有告诉Camel K要映射哪个端口——它无法自动识别非HTTP的业务端口,必须手动配置端口映射规则。

内容的提问来源于stack exchange,提问作者Haifeng Zhang

火山引擎 最新活动