这篇文章教你看明白 nginx-ingress 控制器
off999 2025-03-28 20:12 34 浏览 0 评论
主机 nginx
一般 nginx 做主机反向代理(网关)有以下配置
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/v1kind: Deploymentmetadata:name: nginx-ingress-controllernamespace: ingress-nginxlabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxspec:replicas: 1selector:matchLabels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxtemplate:metadata:labels:app.kubernetes.io/name: ingress-nginxapp.kubernetes.io/part-of: ingress-nginxannotations:prometheus.io/port: "10254"prometheus.io/scrape: "true"spec:# wait up to five minutes for the drain of connectionsterminationGracePeriodSeconds: 300serviceAccountName: nginx-ingress-serviceaccountcontainers:- name: nginx-ingress-controllerimage: quay.io/kubernetes-ingress-controller/nginx-ingress-controller:0.26.1.........ports:- name: httpcontainerPort: 80- name: httpscontainerPort: 443
我们看到
- name: httpcontainerPort: 80- name: httpscontainerPort: 443
默认对外监听了两个端口80和443,也就是说,有这两个端口对外就可以web服务了。
2、ingress 资源
ingress 资源通过yaml进行管理的,比如以下:
apiVersion: extensions/v1beta1kind: Ingressmetadata:name: orderspec:rules:- host: order.example.comhttp:paths: /backend:serviceName: orderservicePort: 80
以上我们定义了一个单一规则的ingress,该pod(nginx-ingress)接收到外部所有的请求,将被发送到内部order服务的80端口上。接下来我们看pod(nginx-ingress)如何把ingress资源转化为该pod中的nginx反向代理配置文件
upstream order{server order:80;}server {listen 80;server_name order.example.com;......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; # 对应ingress 资源 name: order}}
当然ingress如果包含https,那么会转化nginx对应的443端口及证书的配置文件内容,这里就不写了。
那么,单一个规则的ingress资源代理多个服务(比如order服务,product服务)或者多个ingress资源文件如何转化为nginx配置? 猜测,其实就是转化成了多个。
upstream order{server order:80;}
当然,被转化的nginx配置文件要比这些复杂的多,据说还是用lua脚本写的,灵活如openresty。
3、nginx-ingress对外提供服务
一般来讲,pod直接对外提供服务就只有两种方式:
create一个service,该service暴漏nodePort
forward 映射
我们一般采用第一种。
nginx-ingress也是一个pod,所以,为了能使外部通过该pod代理访问,还需要nginx-ingress对外提供一个nodePort的service。这个service这里也不再写了。
4、nginx-ingress工作流程
我们可以看到,因为 nginx-ingress 这个pod做了所有service的代理,在高并发情况下将承受巨大压力,我们可以增加多个pod实例。
作者:dakesolo
链接:
https://juejin.cn/post/6844903957479817230
近期好文:
运维人升职的秘密?《麦肯锡晋升法则》21条暗藏的玄机
软件工程师春节回家拒带电脑被开获赔19.4万;贝佐斯将辞去亚马逊首席执行官;全球大型数据中心总数增至597个 | 一周IT资讯
“高效运维”公众号诚邀广大技术人员投稿,
投稿邮箱:jiachen@greatops.net,或添加联系人微信:greatops1118.
相关推荐
- 酷酷狗app正版下载安装(酷狗音乐下载最新版酷)
-
卖八个金,目前六阶的酷酷狗以及松鼠都是属于不错的两个战宠,酷酷狗的平A伤害十分之高,与黑霸对比也不会落下风,当我们使用技能还可以增加大量伤害,大约等于黑霸的两倍。虽然说松鼠的伤害对比酷酷狗来说十分一...
-
- 迅雷app(迅雷app下载安装官网手机版)
-
首先打开迅雷app,点击我的转存然后点击我们下载的文件然后点击左下角下载就好拉迅雷下载完的视频是直接保存到我的转存里。如果要想再把我的转存里面文件,下载到手机上,首先选择底部云盘图标进入我的转存页面,找到里面要下载的视频,勾选打√,下面会出...
-
2026-02-03 17:03 off999
-
- 苹果itunes在哪里打开(itunes从哪打开)
-
1、将你的iPhone关机。2、同时按住开关机键和Home键。3、当你看见白色的苹果Logo时,请松开开关机键,并继续保持按住Home键。4、开启iTunes,等待其提示你进入恢复模式后,即可按住键盘上的Shift键,点击“恢复”,选择相应...
-
2026-02-03 16:51 off999
- 如何申请qq号(如何申请qq号详细步骤)
-
只需在网页上申请即可获得QQ号码或Email帐号,无需任何费用。为了打击使用自动机进行批量申请QQ帐号的行为,我们对网页申请进行了部分限制,有可能对少数申请造成影响。手机免费申请(仅支持申请QQ号码)...
- visual studio官网下载(microsoft visual studio官方下载)
-
以下是VisualStudio2017的下载和安装步骤:1.打开浏览器,并在搜索引擎中搜索"VisualStudio2017下载"。2.找到微软官方的VisualStud...
-
- cad2014破解版激活教程(cad 2014破解版怎么样激活)
-
步骤如下:1.打开CAD2014,点击激活,勾选同意协议之后它会告诉您,您的序列号是错误的,这时点击关闭等一会再点击激活即可;2.在激活界面中选择“我拥有一个Autodesk激活码”;3.启动对应版本的XFORCEKeygen32bit...
-
2026-02-03 15:51 off999
- electricity(electricity翻译)
-
electricity[英][??lek?tr?s?ti][美][?l?k?tr?s?ti,?il?k-]n.电力;电流,静电;高涨的情绪;紧张;以上结果来自金山词霸例句:1.Article31pow...
- 腾讯游戏实名认证中心官网(腾讯游戏实名认证官网首页)
-
QQ游戏实名注册和防沉迷系统设置方法:第一步:登录实名注册和防沉迷系统网站(http://jkyx.qq.com/web2010/authoriz.htm);第二步:填写实名制信息;第三步:等待审核,...
- qlv文件怎么转换成mp4(qlv文件怎么转换成mp4格式)
-
要将QLV文件转换为MP4文件,您可以使用专业的视频转换软件。首先,下载并安装一个可靠的视频转换器,如Handbrake或AnyVideoConverter。然后,打开软件并导入您要转换的QLV文...
- 央视网cctv5直播(央视网cctv5直播在线观看)
-
看CCTV5直播可以直接选择网页看直播或者使用播放器看直播频道。1、打开e网站2、打开我打圈的,电视直播,但是这里面有些台没有,比如浙江卫视3、然后在左边可以选择你想看的台4、方法2,打开网络主流播放...
- qq历史版本官方下载(qq历史旧版本大全)
-
蟹妖。我用的小米手机,可以双开两个应用,你可以搞两个一样版本的qq。小米手机,还可以手机分身,一个手机不同的解锁方式进入不同的系统,第一个系统你可以安最新版本的qq,另一个系统你可以安装其他版...
- 一个人看的片免费高清大全(一个人看的片免费高清大全在线观看)
-
推荐“爱奇艺App手机版”。它是百度旗下的高清电影站,有许多最新最热的正版大片供免费观看,爱奇艺APP是一款集视频、商城、购票、阅读、直播、泡泡粉丝社区等多种服务于一体的移动软件。爱奇艺手机版为用户提...
- 搜狗翻译app下载(搜狗翻译app下载安装)
-
有啊,点击输入框弹出搜狗键盘,进入搜狗工具栏最左边的图标,进入加号,添加中英互译。1、首先确认是否电脑键盘按键出现问题,可以通过win+r调出运行,输入osk。2、调出虚拟键盘测试虚拟键盘是否可以正常...
欢迎 你 发表评论:
- 一周热门
-
-
抖音上好看的小姐姐,Python给你都下载了
-
全网最简单易懂!495页Python漫画教程,高清PDF版免费下载
-
飞牛NAS部署TVGate Docker项目,实现内网一键转发、代理、jx
-
win7系统还原步骤图解(win7还原电脑系统的步骤)
-
Python 3.14 的 UUIDv6/v7/v8 上新,别再用 uuid4 () 啦!
-
python入门到脱坑 输入与输出—str()函数
-
16949认证费用是多少(16949审核员太难考了)
-
linux软件(linux软件图标)
-
Python三目运算基础与进阶_python三目运算符判断三个变量
-
(新版)Python 分布式爬虫与 JS 逆向进阶实战吾爱分享
-
- 最近发表
- 标签列表
-
- python计时 (73)
- python安装路径 (56)
- python类型转换 (93)
- python进度条 (67)
- python吧 (67)
- python的for循环 (65)
- python格式化字符串 (61)
- python静态方法 (57)
- python列表切片 (59)
- python面向对象编程 (60)
- python 代码加密 (65)
- python串口编程 (77)
- python封装 (57)
- python写入txt (66)
- python读取文件夹下所有文件 (59)
- python操作mysql数据库 (66)
- python获取列表的长度 (64)
- python接口 (63)
- python调用函数 (57)
- python多态 (60)
- python匿名函数 (59)
- python打印九九乘法表 (65)
- python赋值 (62)
- python异常 (69)
- python元祖 (57)
