美文网首页
K8S部署ingress-nginx原理及搭建

K8S部署ingress-nginx原理及搭建

作者: 阿汤哥_8d27 | 来源:发表于2021-12-12 14:39 被阅读0次

    ingress-nginx

    Nginx Ingress 是 Kubernetes Ingress 的一种实现。它通过 watch Kubernetes 集群的 Ingress 资源,将 Ingress 规则转换成 Nginx 的配置,让 Nginx 进行7层的流量转发。如下图所示:


    image.png

    Nginx Ingress 一般有三个组件组成:
    1)ingress是kubernetes的一个资源对象,用于编写定义规则。
    2)反向代理负载均衡器,通常以Service的nodePort方式运行,接收并按照ingress定义的规则进行转发,通常为nginx,haproxy,traefik等,本文使用nginx。
    3)ingress-controller,监听apiserver,获取服务新增,删除等变化,并结合ingress规则动态更新到反向代理负载均衡器上,并重载配置使其生效。
    以上三者有机的协调配合起来,就可以完成 Kubernetes 集群服务的暴露。


    image.png
    组件说明
    externalLB : 外部的4层负载均衡器

    <Service> ingress-nginx : nodePort 类型的 service 为 <IngressController> ingress-nginx 的 pod 接入外部流量
    <IngressController> ingress-nginx : ingress-nginx pod, 负责创建负载均衡(一个安装了nginx 的 pod)
    <Ingress> : Ingress 根据后端 Service 实时识别分类及 IP 把结果生成配置文件注入到 ingress-nginx pod 中
    <Service> site1 : Service 对后端的pod 进行分类(只起分类作用)

    image.png

    部署 Ingress

    apiVersion: networking.k8s.io/v1beta1
    kind: Ingress
    metadata:
      name: nginx-web
      annotations:
        # 指定 Ingress Controller 的类型
        kubernetes.io/ingress.class: "nginx"
        # 指定我们的 rules 的 path 可以使用正则表达式
        nginx.ingress.kubernetes.io/use-regex: "true"
        # 连接超时时间,默认为 5s
        nginx.ingress.kubernetes.io/proxy-connect-timeout: "600"
        # 后端服务器回转数据超时时间,默认为 60s
        nginx.ingress.kubernetes.io/proxy-send-timeout: "600"
        # 后端服务器响应超时时间,默认为 60s
        nginx.ingress.kubernetes.io/proxy-read-timeout: "600"
        # 客户端上传文件,最大大小,默认为 20m
        nginx.ingress.kubernetes.io/proxy-body-size: "10m"
        # URL 重写
        nginx.ingress.kubernetes.io/rewrite-target: /
    spec:
      # 路由规则
      rules:
      # 主机名,只能是域名,修改为你自己的
      - host: k8s.test.com
        http:
          paths:
          - path:
            backend:
              # 后台部署的 Service Name,与上面部署的 Tomcat 对应
              serviceName: tomcat-http
              # 后台部署的 Service Port,与上面部署的 Tomcat 对应
              servicePort: 8080
    

    参考文档&链接

    ingress-nginx官网
    ingress-nginx github
    Ingress
    在 TKE 上部署 Nginx Ingress

    相关文章

      网友评论

          本文标题:K8S部署ingress-nginx原理及搭建

          本文链接:https://www.haomeiwen.com/subject/veerfrtx.html