要在k8s中使用dubbo服务,需要将dubbo端口注册为k8s对外访问的地址与端口。具体实现步骤如下:
端口暴露配置
dubbo 提供对外地址暴露配置项:
DUBBO_IP_TO_REGISTRY=192.168.10.190
DUBBO_PORT_TO_REGISTRY=30006
这两个配置不能从yml配置中获取,只能通过
system.getProperty("DUBBO_IP_TO_REGISTRY")
方式获取,属于环境变量级别。
如何配置
-
使用 java 启动参数设置
java -jar -DDUBBO_IP_TO_REGISTRY=192.168.10.190 -DDUBBO_PORT_TO_REGISTRY=30006 xxx.jar
-
k8s中可以直接使用ENV环境变量设置
env: - name: DUBBO_IP_TO_REGISTRY value: "192.168.10.190" - name: DUBBO_PORT_TO_REGISTRY value: "30006"
k8s 网络环境配置
k8s 对外暴露service服务,通过设置service服务网络信息完成端口暴露
apiVersion: v1
kind: Service
metadata:
name: dat-servicexxx
namespace: pm-dat
spec:
type: NodePort
selector:
app: dat-servicexxx
ports:
- name: dubbo
port: 29080
targetPort: 29080
nodePort: 30006
这里端口 29080 是dubbo 实际启动的 tcp监听端口,一般在 yml 配置文件中配置。对应配置如下:
dubbo:
protocol:
name: dubbo
port: 29080
运行tomcat中,dubbo端口处理
修改 tomcat启动命令脚本 catalina.sh
JAVA_OPTS="$JAVA_OPTS -DDUBBO_IP_TO_REGISTRY=192.168.10.190 -DDUBBO_PORT_TO_REGISTRY=30006"