k8s学习笔记5-部署和应用ingress-nginx-controller(v1.3.0)

一.介绍和原理

A.Ingress 是什么

Ingress 公开从集群外部到集群内服务的 HTTP 和 HTTPS 路由。 流量路由由 Ingress 资源上定义的规则控制。
下面是一个将所有流量都发送到同一 Service 的简单 Ingress 示例:

在这里插入图片描述

B.Ingress的组成

1.ingress:
ingress是一个API对象,通过yaml文件来配置,ingress对象的作用是定义请求如何转发到service的规则,可以理解为配置模板。
ingress通过http或https暴露集群内部service,给service提供外部URI、负载均衡、SSL/TLS能力以及基于域名的反向代理。ingress要依靠ingress-controiler来具体实现以上功能。
2.ingress-controller:
ingress-controller是具体实现反向代理及负载均衡的程序,对ingress定义的规则进行解析,根据配置的规则来实现请求转发。
ingress-controller并不是k8s自带的组件,实际上ingess-controller只是一个统称,用户可以选择不同的ingress-controller实现,目前,由k8s维护的ingress-controller只有google云的GCE与ingress-nginx两个,其他还有很多第三方维护的ingress-controller,具体可以参考官方文档。
但是不管哪一种ingress-controller,实现的机制都大同小异,只是在具体配置上有差异。

一般来说,ingress-controller的形式都是一个pod,里面跑着demon程序和反向代理程序。daemon负责不断监控集群的变化,根据ingress对象生成配置并应用新配置到反向代理,比如ingress-nginx就是动态生成nginx配置,动态更新upstreanm,并在需要的时候reload程序应用新配置。为了方便,后面的例子都以k8s官方维护的ingress-nginx为例。
3.Ingress的工作原理

1.ingress-controller通过和 kubernetes APIServer交互,动态的去感知集群中ingress规则变化;
2.然后读取它,按照自定义的规则,规则就是写明了哪个域名对应哪个service,生成一段nginx配置;
3.再写到nginx-ingress-controller的pod里,这个ingres-controller的pod里运行着一个Nginx服务,
控制器会把生成的nginx置写入/etc/nginx.conf文件中;
4.然后reload一下使配置生效。以此达到域名区分配置和动态更新的作用。

在这里插入图片描述
在这里插入图片描述
客户端一般会把请求发送到负载均衡器上由负载均衡器转发到ingress控制所在的node节点上目的减小Node节点的负载压力

ingress控制器会根据ingress资源对象的配置转发请求到对应的service

service会根据端点,把请求转发到关联的Pod

二.部署

A.下载部署文件和镜像

1.下载ingress-nginx的部署文件(如果出现无法下载此文件,请参考链接https://blog.csdn.net/weixin_43656190/article/details/117604612)

wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.3.0/deploy/static/provider/cloud/deploy.yaml

备注:该文件在github上也可以下载,地址是:https://github.com/kubernetes/ingress-nginx/blob/main/deploy/static/provider/cloud/deploy.yaml

2.由于镜像问题,会导致yaml文件中的镜像无法下载,解决思路:先在docker hub上查找,下载下来之后,将其推送到私有的harbor镜像服务器上
需要下载如下两个镜像:

root@k8s-master1:~/ingress# cat deploy.yaml |grep imag
        image: registry.k8s.io/ingress-nginx/controller:v1.3.0@sha256:d1707ca76d3b044ab8a28277a2466a02100ee9f58a86af1535a3edf9323ea1b5
        imagePullPolicy: IfNotPresent
        image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
        imagePullPolicy: IfNotPresent
        image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v1.1.1@sha256:64d8c73dca984af206adf9d6d7e46aa550362b1d7a01f3a0a91b20cc67868660
        imagePullPolicy: IfNotPresent

在docker hub上搜索

root@k8s-master1:~/ingress# docker search ingress-nginx --no-trunc 
NAME                                           DESCRIPTION                                      STARS     OFFICIAL   AUTOMATED
willdockerhub/ingress-nginx-controller         sync from  k8s.gcr.io/ingress-nginx/controller   20                   
pollyduan/ingress-nginx-controller             k8s.gcr.io/ingress-nginx/controller              9                    
liangjw/ingress-nginx-controller               k8s.gcr.io/ingress-nginx/controller              7                    
wangshun1024/ingress-nginx-controller                                                           3                    
dyrnq/ingress-nginx-controller                 k8s.gcr.io/ingress-nginx/controller              2                    
acicn/ingress-nginx-controller                                                                  2                    
wallarm/ingress-nginx                                                                           0                    
13916077927/ingress-nginx-controller           sync from k8s.gcr.io/ingress-nginx/controller    0                    
rancher/ingress-nginx                                                                           0                    
v5cn/ingress-nginx-controller                  k8s.gcr.io/ingress-nginx/controller:v0.46.0      0                    
platform9/ingress-nginx                                                                         0                    
cangyin/ingress-nginx-controller                                                                0                    
forging2012/ingress-nginx-controller                                                            0                    
sundewang/ingress-nginx-controller                                                              0                    
boy530/ingress-nginx-controller                                                                 0                    
blendlabs/ingress-nginx-catchall               A blend branded nginx catchall.                  0                    
cjk2atmb/ingress-nginx-controller                                                               0                    
opsdockerimage/ingress-nginx-controller                                                         0                    
acicn/ingress-nginx-kube-webhook-certgen                                                        0                    
rudl/ingress-nginx                             Nginx ingress controller                         0                    
opsdockerimage/ingress-nginx-nginx                                                              0                    
lchdzh/ingress-nginx-controller                                                                 0                    
liy36/ingress-nginx-controller                                                                  0                    
opsdockerimage/ingress-nginx-e2e-test-runner                                                    0                    
chainstack/ingress-nginx                                                                        0                    
root@k8s-master1:~/ingress# docker search kube-webhook-certgen --no-trun
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

狂奔的蜗牛x

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值