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 類型,占用宿主機端口