1. nginx 版本要高,1.12 以上,且有 --with-stream 模块,测试地址: 10.16.0.95 (公网地址 121.251.110.41 )
2. 物理机 nginx 必须将以下配置添加在nginx.conf中,http 模块外
stream {
upstream udpserver {
server 10.16.0.237:30000;
server 10.16.0.238:30000;
server 10.16.0.239:30000;
}
server {
listen 27000 udp;
proxy_responses 1;
proxy_timeout 20s;
proxy_pass udpserver;
}
}
3. 将域名A 记录绑定此服务器地址,不用配置 server_name,因为udp 不支持 server_name
4. k8s ingress 指向 svc ,
deployment 要开启容器的udp 端口
deployments ports:
- containerPort: 7000
name: http1
protocol: UDP
svc :
ports:
- name: im-port
nodePort: 30000
port: 7000
protocol: UDP
targetPort: 7000
selector:
app: im-server
release: stabel
sessionAffinity: None
type: NodePort
测试:
nc -uvz 121.251.110.41 27000
注释:
相当于是直接外网ip udp 27000 转向k8s svc 30000,此svc 为 nodeport 类型,占用宿主机端口