前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >通过nginx-ingress做tcp\udp 4层网络转发

通过nginx-ingress做tcp\udp 4层网络转发

原创
作者头像
chen1900s
发布2023-10-06 17:56:39
1.4K0
发布2023-10-06 17:56:39
举报
文章被收录于专栏:TKE学习TKE学习

k8s集群通过nginx-ingress做tcp\udp 4层网络转发 集群是TKE集群

1,检查nginx-ingress-controller的POD是否开启tcp\udp转发,TKE集群安装的nginx-ingress默认是开启的

代码语言:javascript
复制
      - args:
        - --tcp-services-configmap=kube-system/nginx-ingress-nginx-tcp
        - --udp-services-configmap=kube-system/nginx-ingress-nginx-udp

2,示例 kuard-demo.yaml

代码语言:yaml
复制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: kuard
  namespace: nginx-ingress
spec:
  selector:
    matchLabels:
      app: kuard
  replicas: 1
  template:
    metadata:
      labels:
        app: kuard
    spec:
      containers:
      - image: gcr.tencentcloudcr.com/kuar-demo/kuard-amd64:blue
        imagePullPolicy: Always
        name: kuard
        ports:
        - containerPort: 8080
        
---
apiVersion: v1
kind: Service
metadata:
  name: kuard
  namespace: nginx-ingress
spec:
  ports:
  - port: 9527
    targetPort: 8080
    protocol: TCP
  selector:
    app: kuard

3,需要修改下configmap(命令行方式 或者是控制台方式都可以)

代码语言:javascript
复制
kubectl  -n kube-system get cm  | grep nginx-ingress-nginx

nginx-ingress-nginx-controller                      9      133d
nginx-ingress-nginx-tcp                             0      133d
nginx-ingress-nginx-udp                             0      133d


# kubectl  -n kube-system edit  cm nginx-ingress-nginx-tcp

[root@VM-0-17-tlinux ~]# kubectl  -n kube-system get  cm nginx-ingress-nginx-tcp -o yaml
apiVersion: v1
data:                                   #TKE默认没有data
  "9527": nginx-ingress/kuard:9527      #添加这个配置 命名空间/服务名称:端口
kind: ConfigMap
metadata:
  labels:
    k8s-app: nginx-ingress-nginx-tcp
    qcloud-app: nginx-ingress-nginx-tcp
  name: nginx-ingress-nginx-tcp
  namespace: kube-system

进入nginx-ingress容器查看TCP services处会出现对应的负载配置

代码语言:javascript
复制
# kubectl  -n kube-system  exec -it nginx-ingress-nginx-controller-5ddf7ccc4f-v4pzp -- /bin/sh

vi  nginx.conf  镜像过滤

 
 
 # TCP services            
                                  
        server {
                preread_by_lua_block {
                        ngx.var.proxy_upstream_name="tcp-nginx-ingress-kuard-9527";
                }                                 

                listen                  9527;
                                                          
                listen                  [::]:9527;
                                             
                proxy_timeout           600s;  
                proxy_pass              upstream_balancer;
                                               
        }

4,编辑nginx-ingress-nginx-controller svc 添加对应端口

服务与路由>service>找到对应nginx-ingress-controller的service> 更新转发配置,在原有基础上进行添加转发配置

nginx-ingress-controller的service
nginx-ingress-controller的service

或者通过编辑nginx-ingress-nginx-controller svc对应的yaml文件

代码语言:javascript
复制
apiVersion: v1
kind: Service
metadata:
  annotations:
    service.cloud.tencent.com/direct-access: "false"
  labels:
    k8s-app: nginx-ingress-nginx-controller
    qcloud-app: nginx-ingress-nginx-controller
  name: nginx-ingress-nginx-controller
  namespace: kube-system
spec:
  clusterIP: 172.18.248.35
  externalTrafficPolicy: Cluster
  ports:
  - name: 80-80-tcp
    nodePort: 31899
    port: 80
    protocol: TCP
    targetPort: 80
  - name: 443-443-tcp
    nodePort: 32534
    port: 443
    protocol: TCP
    targetPort: 443
  - name: 9527-9527-tcp-5q8prs0zx68     #增加转发配置,端口替换成自己服务的端口
    nodePort: 32677
    port: 9527
    protocol: TCP
    targetPort: 9527
  selector:
    k8s-app: nginx-ingress-nginx-controller
    qcloud-app: nginx-ingress-nginx-controller
  sessionAffinity: None
  type: LoadBalancer

4,然后通过nginx-ingress-nginx-controller 的svc clb访问

代码语言:javascript
复制
[root@VM-0-17-tlinux ~]# kubectl  -n kube-system  get svc   | grep  nginx-ingress-nginx-controller
nginx-ingress-nginx-controller                     LoadBalancer   172.18.248.35    118.24.224.251   80:31899/TCP,443:32534/TCP     3m3s
nginx-ingress-nginx-controller-admission           ClusterIP      172.18.251.207   <none>           443/TCP                        133d

参考文档:https://kubernetes.github.io/ingress-nginx/user-guide/exposing-tcp-udp-services/

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

原创声明:本文系作者授权腾讯云开发者社区发表,未经许可,不得转载。

如有侵权,请联系 cloudcommunity@tencent.com 删除。

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
相关产品与服务
容器镜像服务
容器镜像服务(Tencent Container Registry,TCR)为您提供安全独享、高性能的容器镜像托管分发服务。您可同时在全球多个地域创建独享实例,以实现容器镜像的就近拉取,降低拉取时间,节约带宽成本。TCR 提供细颗粒度的权限管理及访问控制,保障您的数据安全。
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
http://www.vxiaotou.com