Ingress控制器自身是运行于Pod中的容器应用,一般是Nginx或Envoy一类的具有代理及负载均衡功能的守护进程,它监视着来自于API Server的Ingress对象状态,并以其规则生成相应的应用程序专有格式的配置文件并通过重载或重启守护进程而使新配置生效。

例如,对于Nginx来说,Ingress规则需要转换为Nginx的配置信息。简单来说,Ingress控制器其实就是托关于Kubernetes系统之上的用于实现在应用层发布服务的Pod资源,它将跟踪Ingress资源并实时生成配置规则。那么,同样运行为Pod资源的Ingress控制器进程又该如何接入外部的请求呢?常用的方式有下面两种。

  1. 以Deployment控制器管理Ingress控制器的Pod资源,并通过NodePort或LoadBalancer类型的Service对象为其接入集群外部的请求流量,这就意味着,定义一个Ingress控制器时,必须在其前端定义一个专用的Service资源。

  2. 借助于DaemonSet控制器,将Ingress控制器的Pod资源各自以单一实例的方式运行于集群的所有或部分工作节点之上,并配置这类Pod对象以hostPort或hostNetwork的方式在当前节点接入外部流量。

以ingress-nginx项目为例,部署Ingress Nginx控制器的配置文件被切割存放在了多个不同的文件中,并集中存储于其源码deploy子目录下,同事,为了方便用户部署,它还将所需的资源全部集成为一个配置文件mandatory.yaml:

~]$ kubectl apply -f https://raw.githubusercontent.com/kubernetes/ingress-nginx/master/deploy/mandatory.yaml

  因为需要下载相关的镜像文件,因此前面部署过程中的Pod资源的创建需要等待一段时间才能完成,具体时长要取决于网络的可用状况。。可使用如下命令持续监控创建过程,待其状态为 “ running ” 之后即可表示正常运行:

~]$ kubectl get pods -n ingress-nginx --watch
NAME READY STATUS RESTARTS AGE
nginx-ingress-controller-54b86f8f7b-jqvh4 1/1 Running 0 4m50s

线的配置清单中采用了基于Deployment控制器部署Ingress Nginx的昂是,因此接入外部流量还需要手动为其创建相关的NodePort或LoadBalancer类型的Service资源对象。

下面的配置清单中对类型定义了NodePort,并明确指定了易记的端口和IP地址,以方便用户使用:

apiVersion: v1
kind: Service
metadata:
name: nginx-ingress-controller
namespace: ingress-nginx
spec:
type: NodePort
clusterIP: 10.99.99.99
ports:
- port: 80
name: http
nodePort: 30080
- port: 443
name: https
nodePort: 30443
selector:
app.kubernetes.io/name: ingress-nginx

  

将上面的配置信息保存于文件中,如nginx-ingress-service.yaml,而后执行如下命令完成资源的创建。注意: 其标签选择器应该与mandatory.yaml配置清单中的Deployment控制器nginx-ingress-controller的选择器保持一致:
]$ kubectl apply -f nginx-ingress-service.yaml

  

提示:如果集群运行支持LBaaS的IaaS云环境,则可以将其类型指定为LoadBalancer,这样直接就有了可用的external-LB。

确认Service对象nginx-ingress-controller的状态没有问题后即可于集群外部对其发起访问测试,目标URL为http://:30443,确认可接收到响应报文后即表示Ingress Nginx部署完成。不过,本示例中尚且缺少一个可用的外部负载均衡器,因此,访问测试时暂时还只能使用http://:进行。

Kubernetes--部署Ingress控制器(Nginx)的更多相关文章

  1. 【转】Kubernetes的Ingress控制器比较

    Kubernetes的Ingress控制器比较 fiisio Kubernetes/云计算/资源调度/Go语言 21 人赞同了该文章 翻译:https://medium.com/flant-com/c ...

  2. 【转帖】kubernetes 部署ingress

    kubernetes 部署ingress https://www.cnblogs.com/dingbin/p/9754993.html 明天尝试一下 之前的文档里面一直没有提 需要改host文件 我有 ...

  3. kubernetes 部署ingress

    kubernetes Ingess 是有2部分组成,Ingress Controller 和Ingress服务组成,常用的Ingress Controller 是ingress-nginx,工作的原理 ...

  4. 用Kubernetes部署Springboot或Nginx,也就一个文件的事

    1 前言 经过<Maven一键部署Springboot到Docker仓库,为自动化做准备>,Springboot的Docker镜像已经准备好,也能在Docker上成功运行了,是时候放上Ku ...

  5. Kubernetes 部署 Nginx Ingress Controller 之 nginxinc/kubernetes-ingress

    更新:这里用的是 nginxinc/kubernetes-ingress ,还有个 kubernetes/ingress-nginx ,它们的区别见 Differences Between nginx ...

  6. 08 . Kubernetes之 ingress及Ingress Controller

    Ingress简介 ingress是什么? 上篇文章介绍service时有说了暴露了service的三种方式ClusterIP.NodePort与LoadBalance,这几种方式都是在service ...

  7. Kubernetes 部署 - DevOps CI/CD详细指南

    什么是Kubernetes部署?​ 在此文章中,我们将探索Kubernetes(K8s),结合DigitalOcean Kubernetes集群与Buddy自动化运维系统部署以达到以下列出的目标: 使 ...

  8. kubernetes之ingress及ingress controller

    什么是ingress Ingress是授权入站连接到达集群服务的规则集合. 从外部流量调度到nodeprot上的service 从service调度到ingress-controller ingres ...

  9. k8s Ingress和ingress控制器

    ingress架构图简介 我们知道service的表现形式为IP:PORT,即工作在第四层传输层(TCP/IP层),那么对于不同的URL地址经常对应用不同的后端服务或者虚拟服务器,这些应用层的转发机制 ...

  10. 干货分享:如何使用Kubernetes的Ingress API

    您可以通过使用诸如Kong for Kubernetes的Ingress控制器(使用自定义资源定义并提供许多插件)来极大地扩展Ingress资源的功能. Kubernetes正在整个技术行业中得到采用 ...

随机推荐

  1. StarRC 转XRC flow

    抽取寄生参数是我们工作中经常做的事情,目前来说三家EDA 都有抽取工具,分别是StarRC, XRC,QRC,其中QRC现在有个升级版本Quantus,但是由于calibre在DRC 和LVS方面太强 ...

  2. Python_七十二变_二进制和字符编码

    第二章  七十二变 二进制和字符编码 8bit为1byte   字节 1024byte为1KB  千 1024KB为1MB  兆 1024MB为1GB  吉 1024GB为1TB  太 ASCLL字符 ...

  3. 使用win10 wsl中的Debian编译lean 的 lede

    安装Debian发行版 启用windows 适用于linux 的 windows子系统 安装Debian 参考p3terx的文章把debian装到非系统盘上: https://p3terx.com/a ...

  4. Java基础学习:6、方法的重载和可变参数

    一.方法重载: 基本介绍: Java中允许在一个类中,多个同名方法的存在,到要求形参列表不一致. 注意事项: 1.方法名:必须一致. 2.形参列表:必须不同(形参类型或个数或顺序至少有一样不同,参数名 ...

  5. kubeadm安装

    目录: 环境准备 所有节点安装docker 部署K8s集群 部署Dashboard 安装Harbor私有仓库 安装 master(2C/4G,cpu核心数要求大于2) 192.168.63.100 d ...

  6. 报错解决OSError: /lib64/libm.so.6: version `GLIBC_2.27' not found

    使用pyg报错如下: 1 Traceback (most recent call last): 2 File "main.py", line 18, in <module&g ...

  7. shell - scriptfifo

    shell1: mkfifo xxfifo script -f xxfifo cmd cmd exit   -----主动退出 shell2: cat xxfifo 可以看到shell1的所有操作. ...

  8. python之路3:文件操作和函数基础

    文件操作 字符编码解码 函数基础 内置函数 一.文件操作 对文件操作流程 打开文件,得到文件句柄并赋值给一个变量 通过句柄对文件进行操作 关闭文件 打开文件的模式有: r,只读模式(默认). w,只写 ...

  9. VM安装linux2022、设置root密码、设置国内更新源

    一.创建虚拟机 1.打开VM软件选择"创建新的虚拟机" 2.选择"典型"即可 3.选择"稍后安装操作系统" 4.选择客户机操作系统为&quo ...

  10. Qt学习笔记(一) 关于QWidget类的paintEvent方法

    今天要讨论的也算是QT的核心之一了,那就是如何对widget进行重绘,这里就是可以看到,继承了QWidget的子类,自己重新写一个paintEvent函数就可以了. 这个paintEvent就相当于是 ...