物理机 nginx udp 转发至k8s ingress (udp)

 

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

  

 

posted @ 2020-04-21 14:34  lixinliang  阅读(1437)  评论(0编辑  收藏  举报