全国服务热线:

15861139266

Nginx-ingress 控制器到底怎样实现的,苏州PLC培训,苏州上位机培训,苏州机器视觉培训,苏州工业机器人培训
发布时间:2023-04-23 08:55:20 点击次数:277

Nginx-ingress 控制器到底怎样实现的

upstream order{

    server 192.168.1.10:5001;

    server 192.168.1.11:5001;

}


server {

    listen 80;

    server_name  order.example.com;

    access_log     /var/log/nginx/order.example.com-access.log;

    error_log     /var/log/nginx/order.example.com-error.log;

    location / {

        proxy_pass_header Server;

        proxy_set_header Host $http_host;

        proxy_set_header X-Real-IP $remote_addr;

        proxy_set_header X-Scheme $scheme;

        proxy_pass http://order;

    }

}

其中 192.168.1.10:5001,192.168.1.10:5001 我们把他们称为 Endpoint,就是所谓的具体的服务,比如 order 订单服务。


pod nginx-ingress

nginx-ingress也是一种代理,是一个pod,外部的数据统一经过(必经)这个pod,然后通过该pod内部的nginx方向代理到各各服务(Endpoint)。nginx-ingress是ingress控制器插件的一种,这些插件有很多,比如istio-ingressgateway。


1、Pod

nginx-ingress pod有两个功能,controller 和 nginx:


“controller:和kubernetes api通讯实时更新nginx配置(就是ingress yaml资源了) nginx:正常的反向代理

与主机nginx的区别是,该pod nginx-ingress是运行在pod里。主机在定义反向代理配置文件时,需要监听一个对外开放的端口,比如上边的80端口。那么pod中的nginx端口是如何配置的呢?


我们在github上找到了nginx-ingress的deployment.yaml


https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/static/mandatory.yaml

其中一段


apiVersion: apps/v1

kind: Deployment

metadata:

  name: nginx-ingress-controller

  namespace: ingress-nginx

  labels:

    app.kubernetes.io/name: ingress-nginx

    app.kubernetes.io/part-of: ingress-nginx

spec:

  replicas: 1

  selector:

    matchLabels:

      app.kubernetes.io/name: ingress-nginx

      app.kubernetes.io/part-of: ingress-nginx

  template:

    metadata:

      labels:

        app.kubernetes.io/name: ingress-nginx

        app.kubernetes.io/part-of: ingress-nginx

      annotations:

        prometheus.io/port: "10254"

        prometheus.io/scrape: "true"

    spec:

      # wait up to five minutes for the drain of connections

      terminationGracePeriodSeconds: 300

      serviceAccountName: nginx-ingress-serviceaccount

      containers:

        - name: nginx-ingress-controller

          image: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1

          ...

          ...

          ...

          ports:

            - name: http

              containerPort: 80

            - name: https

              containerPort: 443

我们看到


- name: http

  containerPort: 80

- name: https

  containerPort: 443

默认对外监听了两个端口80和443,也就是说,有这两个端口对外就可以web服务了。










1.png

立即咨询
  • 品质服务

    服务贴心周到

  • 快速响应

    全天24小时随时沟通

  • 专业服务

    授权率高,保密性强

  • 完善售后服务

    快速响应需求,及时性服务

直播课程
软件开发基础课程
上位机软件开发课
机器视觉软件开发课
专题课
联系方式
电话:15861139266
邮箱:75607082@qq.com
地址:苏州吴中区木渎镇尧峰路69号
关注我们

版权所有:江苏和讯自动化设备有限公司所有 备案号:苏ICP备2022010314号-1

技术支持: 易动力网络