4.3 KiB
4.3 KiB
GBS Dubbo NodePort 映射与还原记录
记录时间:2026-07-03
背景
本地项目连接 100 开发环境 Nacos 后,Dubbo consumer 从 jjb-dragon-facade 获取到的 provider 地址是 k8s Pod IP,例如:
10.244.178.143:20880
本地电脑无法直连 k8s Pod 网段,因此曾临时采用方案 A:通过 NodePort 暴露 k8s 内 Dubbo provider,并让 provider 注册 192.168.20.100:32xxx 到 Nacos。
临时映射操作
1. 创建 Dubbo NodePort Service
为实际注册 Dubbo provider 的底座服务创建 *-dubbo NodePort Service,端口范围如下:
jjb-saas-system 32080
jjb-saas-auth 32081
jjb-saas-events 32082
jjb-saas-security 32083
jjb-saas-message 32084
jjb-saas-login 32085
jjb-saas-base 32086
jjb-saas-process-layout 32087
jjb-saas-user 32088
jjb-saas-official 32089
jjb-saas-facade 32090
jjb-saas-open-platform 32091
jjb-saas-application 32092
jjb-saas-attachment 32093
jjb-saas-formily-design 32094
jjb-saas-desk 32095
jjb-saas-config 32096
jjb-saas-document 32097
jjb-saas-component-design 32098
jjb-saas-view 32099
jjb-saas-gateway 32100
Service 结构示例:
apiVersion: v1
kind: Service
metadata:
name: jjb-saas-message-dubbo
namespace: jjb-dragon
spec:
type: NodePort
selector:
app: jjb-saas-message-pod
ports:
- name: dubbo
protocol: TCP
port: 20880
targetPort: 20880
nodePort: 32084
2. 设置 Deployment 运行时环境变量
给对应 Deployment 设置:
kubectl set env deployment/<service>-deploy -n jjb-dragon \
DUBBO_IP_TO_REGISTRY=192.168.20.100 \
DUBBO_PORT_TO_REGISTRY=<nodePort>
示例:
kubectl set env deployment/jjb-saas-message-deploy -n jjb-dragon \
DUBBO_IP_TO_REGISTRY=192.168.20.100 \
DUBBO_PORT_TO_REGISTRY=32084
3. 开放防火墙端口
firewall-cmd --permanent --add-port=32080-32100/tcp
firewall-cmd --reload
4. 临时映射备份位置
/root/codex-backups/dubbo-nodeport-20260703125329
还原操作
用户要求 100 环境不要映射 Dubbo 到外部端口,因此已执行还原。
1. 清理 Deployment 环境变量
kubectl set env deployment/<service>-deploy -n jjb-dragon \
DUBBO_IP_TO_REGISTRY- \
DUBBO_PORT_TO_REGISTRY-
2. 删除 Dubbo NodePort Service
kubectl delete svc <service>-dubbo -n jjb-dragon --ignore-not-found=true
已删除范围:
jjb-saas-application-dubbo
jjb-saas-attachment-dubbo
jjb-saas-auth-dubbo
jjb-saas-base-dubbo
jjb-saas-component-design-dubbo
jjb-saas-config-dubbo
jjb-saas-desk-dubbo
jjb-saas-document-dubbo
jjb-saas-events-dubbo
jjb-saas-facade-dubbo
jjb-saas-formily-design-dubbo
jjb-saas-gateway-dubbo
jjb-saas-login-dubbo
jjb-saas-message-dubbo
jjb-saas-official-dubbo
jjb-saas-open-platform-dubbo
jjb-saas-process-layout-dubbo
jjb-saas-security-dubbo
jjb-saas-system-dubbo
jjb-saas-user-dubbo
jjb-saas-view-dubbo
3. 关闭防火墙端口
firewall-cmd --permanent --remove-port=32080-32100/tcp
firewall-cmd --reload
4. 还原前备份位置
/root/codex-backups/dubbo-nodeport-restore-20260703180914
还原后验证
k8s 验证
kubectl get svc -n jjb-dragon | grep -- '-dubbo'
kubectl get deploy -n jjb-dragon -o jsonpath='{range .items[*]}{.metadata.name}{"\t"}{.spec.template.spec.containers[0].env}{"\n"}{end}' | grep 'DUBBO_.*TO_REGISTRY'
结果:无 *-dubbo Service,无 DUBBO_IP_TO_REGISTRY / DUBBO_PORT_TO_REGISTRY 环境变量。
本机端口验证
从本机测试:
192.168.20.100:32080-32100 全部 CLOSED
Nacos 验证
jjb-dragon-facade 中不再存在 192.168.20.100:32xxx provider。服务重启后重新回到 k8s 内部注册方式,即 Pod IP,例如 10.244.*:20880。
注意事项
- 本次还原没有修改本地项目代码。
- 本次还原没有重新打镜像。
- 本次还原会使本地电脑不能再通过
192.168.20.100:32xxx直连 k8s 内 Dubbo provider。 - 如后续仍需要本地调用 k8s Dubbo 服务,建议优先采用独立 local-dev namespace 或 VPN/内网路由方案,避免影响正式线上环境。