使用Ingress发布应用程序
文章目录
- 使用Ingress发布应用程序
- @[toc]
- 一、什么是Ingress
- 二、定义Ingress
- 三、什么是Ingress控制器
- 四、部署nginx Ingress控制器
- 1.了解nginx Ingress控制器的部署方式
- 2.安装nginx Ingress控制器
- 3.本地实际测试
- 五、使用Ingress对外发布应用程序
- 1.使用Deployment和Service部署和发布应用程序
- 2.使用Ingress对外发布上述Service
- 3.访问Ingress发布的应用程序
文章目录
- 使用Ingress发布应用程序
- @[toc]
- 一、什么是Ingress
- 二、定义Ingress
- 三、什么是Ingress控制器
- 四、部署nginx Ingress控制器
- 1.了解nginx Ingress控制器的部署方式
- 2.安装nginx Ingress控制器
- 3.本地实际测试
- 五、使用Ingress对外发布应用程序
- 1.使用Deployment和Service部署和发布应用程序
- 2.使用Ingress对外发布上述Service
- 3.访问Ingress发布的应用程序
一、什么是Ingress
Ingress可以理解成Kubernetes集群的“智能交通指挥系统”。就像商场入口的导览员会根据顾客需求指引不同店铺一样,Ingress的作用是管理外部流量,把用户请求准确引导到集群内的各个服务。
举个更生活化的例子:假设你的Kubernetes集群是一个大型游乐园,里面有多个游乐项目(服务)。Ingress就是游乐园的检票口和导览地图,它的工作分为两个部分:
- 规则手册(Ingress资源):由管理员编写,比如规定“从东门来的游客去摩天轮,通过官网预约的游客去过山车”。
- 执行者(Ingress控制器):像检票员一样实时检查游客请求,根据规则手册把请求转发到对应项目。比如看到带有“摩天轮预约码”的游客,就打开通往摩天轮的通道。
它的三大核心能力:
- 智能分流:根据域名(如
shop.com
去商城服务)或路径(如/api
去后台服务)分流请求,避免所有流量挤在同一个入口。 - 安全保障:统一处理SSL证书(类似给所有游客发放加密手环),外部流量经过Ingress后自动解密,内部服务无需单独处理加密。
- 负载调节:像热门项目增加检票通道一样,自动将大量请求分摊到多个服务实例,防止单个服务被压垮。
简单来说,Ingress让外部用户访问集群服务变得像用手机导航一样方便——你只需要输入目的地(域名或路径),剩下的路线规划(流量路由)和安全检查(SSL)都由它自动完成。
二、定义Ingress
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: example-ingressannotations:nginx.ingress.kubernetes.io/rewrite-target: / # 路径重写注解(Nginx控制器专用)
spec:ingressClassName: nginx # 指定使用的Ingress控制器类型[^2]rules:- host: example.com # 域名匹配规则http:paths:- path: /service1 # URL路径匹配pathType: Prefix # 路径类型(Prefix/Exact/ImplementationSpecific)backend:service:name: service1 # 后端服务名称port:name: http # 服务端口名称(或直接指定number: 80)- path: /service2pathType: Prefixbackend:service:name: service2port:number: 8080 # 直接指定端口号
- annotations:控制器专属配置(如路径重写、限流等),需参考具体控制器文档。
- ingressClassName:指定匹配的Ingress控制器(需与集群中已部署的IngressClass一致)。
- pathType:定义路径匹配规则,Prefix表示前缀匹配(如/service1/会匹配/service1/xxx)。
- backend:指定流量路由的后端服务及端口(支持端口名称或数字)。
三、什么是Ingress控制器
Ingress控制器可以理解为Kubernetes集群的“智能流量调度员”。它的作用类似于快递站的分拣机器人,专门负责把外部的访问请求(比如用户通过浏览器发送的请求)准确快速地分发到集群内部对应的服务。
举个生活化的例子:
假设你网购了一件商品,快递站收到包裹后需要分拣到不同区域的快递柜:
- Ingress资源像是你填写的快递单,上面写着「收件地址:5号楼3层」;
- Ingress控制器就是分拣机器人,它读取快递单信息后,自动把包裹投递到正确的位置。
三大核心职责:
- 流量导航
根据规则(如域名shop.com
或路径/images
)把请求导向对应服务,就像快递机器人根据地址匹配快递柜。例如:- 访问
www.example.com/video
→ 视频服务 - 访问
www.example.com/news
→ 新闻服务
- 访问
- 安全守护
统一处理HTTPS加密(类似给快递包裹加装防拆封条),外部流量经过控制器解密后,内部服务无需单独处理加密。 - 负载调节
像热门快递柜增加分拣通道一样,自动将大量请求分摊到多个服务实例,防止单个服务崩溃。
与其他组件的区别:
- Ingress资源 vs 控制器:
规则说明书 vs 执行者。用户编写Ingress资源定义路由规则(YAML文件),控制器实时读取并执行这些规则。 - 与传统负载均衡器的区别:
传统设备需要手动配置,而Ingress控制器能自动感知服务变化(如新增实例),动态调整路由。
部署小知识:
-
必须安装:就像快递站没有分拣机器人包裹会堆积一样,Kubernetes默认不带控制器,需额外部署(如Nginx、Traefik等)。
-
多种选择
:不同控制器特性不同,比如:
- Nginx控制器:适合高并发场景(类似大型分拣中心)
- Traefik控制器:配置更简单,适合动态调整(类似灵活的小型分拣车)
简单来说,有了Ingress控制器,外部用户访问集群服务就像收快递一样方便——你只需要告诉它「送到哪里」(域名或路径),剩下的分拣、安全和调度都由这个「智能调度员」搞定。
四、部署nginx Ingress控制器
1.了解nginx Ingress控制器的部署方式
以下是 Nginx Ingress 控制器的 主要部署方式 及其适用场景,结合不同环境和需求进行说明:
- 通用部署:基于官方 YAML 文件
适用场景:快速部署、测试环境或小规模集群。
操作步骤:
-
下载官方提供的
mandatory.yaml
文件(对应不同版本):
wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.9.5/deploy/static/provider/cloud/deploy.yaml
-
执行部署命令:
kubectl apply -f deploy.yaml
核心组件:
- 创建
ingress-nginx
命名空间 - 部署
nginx-ingress-controller
的 Deployment 或 DaemonSet - 配置 RBAC 权限、ConfigMap 等
特点:简单快捷,但需自行处理外部访问(如 NodePort 或 LoadBalancer)。
- 高性能部署:DaemonSet + HostNetwork
适用场景:生产环境、高并发或对网络延迟敏感的场景。
操作步骤:
-
修改
mandatory.yaml
,将 Deployment 改为 DaemonSet,并启用hostNetwork: true
。 -
通过标签筛选节点,部署到专用边缘节点:
# DaemonSet配置示例 spec:template:spec:hostNetwork: true # 使用宿主机网络tolerations: # 允许调度到Master节点(可选)- key: node-role.kubernetes.io/mastereffect: NoSchedule
优点:
- 绕过 NodePort,减少网络转发层级,提升性能
- 直接使用节点 IP 和端口(80/443),避免端口冲突
缺点:需手动管理节点和负载均衡器绑定。
- 云服务商集成:LoadBalancer 自动绑定
适用场景:公有云环境(如 AWS、腾讯云、阿里云)。
操作步骤:
-
部署 Nginx Ingress 控制器后,创建 LoadBalancer 类型的 Service:
apiVersion: v1 kind: Service metadata:name: ingress-nginx spec:type: LoadBalancer # 云平台自动创建负载均衡器ports:- port: 80targetPort: 80
-
云平台自动分配外部 IP,流量直达 Ingress Pod(若支持 VPC-CNI 直连 Pod 更优)。
特点:
- 全托管负载均衡,支持自动扩缩容
- 部分云平台支持直通 Pod(如腾讯云 VPC-CNI 模式),避免 NodePort 瓶颈。
- 高可用部署:多副本 + 节点调度
适用场景:需高可靠性的生产环境。
操作步骤:
-
扩增控制器副本数:
kubectl scale --replicas=3 deployment/nginx-ingress-controller -n ingress-nginx
-
通过节点亲和性(Affinity)或污点(Taint)分散 Pod:
# 示例:限制Pod仅部署在专用节点 spec:affinity:nodeAffinity:requiredDuringSchedulingIgnoredDuringExecution:nodeSelectorTerms:- matchExpressions:- key: ingress-nodeoperator: Invalues: ["true"]
优化点:
- 副本数建议与节点数一致,避免单点故障
- 结合 HPA(Horizontal Pod Autoscaler)实现自动扩缩容。
- Operator 模式部署
适用场景:需要声明式管理和高级定制的场景。
操作步骤:
-
安装 Nginx Ingress Operator(如通过 Helm 或直接部署):
git clone https://github.com/nginxinc/nginx-ingress-helm-operator make deploy IMG=nginx/nginx-ingress-operator:1.2.0
-
通过自定义资源(CRD)管理 Ingress 配置。
特点:
- 简化生命周期管理(如证书更新、配置热加载)
- 支持更复杂的路由策略和监控集成。
部署方式对比与选型建议
方式 | 适用场景 | 优点 | 缺点 |
---|---|---|---|
官方 YAML | 测试/小规模 | 简单快速 | 需手动处理外部访问 |
DaemonSet + HostNetwork | 高性能生产环境 | 低延迟、高吞吐 | 需维护节点和负载均衡器绑定 |
云服务商 LoadBalancer | 公有云环境 | 全托管、自动扩缩容 | 依赖云平台特性 |
Operator 模式 | 复杂路由/声明式管理 | 灵活定制、自动化运维 | 学习成本较高 |
建议:
- 公有云用户优先选择云平台集成方案(如腾讯云“指定节点池 DaemonSet 部署”);
- 自建集群推荐 DaemonSet + HostNetwork 或高可用 Deployment;
- 需要深度定制时考虑 Operator 模式。
注意事项
- 版本兼容性:确保 Ingress 控制器版本与 Kubernetes 集群兼容(如 1.26+ 需特定镜像)。
- 证书管理:通过 Secret 存储 TLS 证书,并在 Ingress 中引用。
- 安全加固:关闭非必要端口,避免使用 NodePort 暴露过多服务。
通过以上方式,可根据实际需求灵活部署 Nginx Ingress 控制器,实现高效、安全的流量管理。
2.安装nginx Ingress控制器
在K8S集群中安装nginx Ingress控制器一般不需要进行额外配置,主要有两种方法:一种是使用Helm工具基于Chart文件安装,另一种是使用kubect apply命令基于YAML格式的配置文件安装。考虑到国内的网络环境,这里采用第2种方法安装。
(1)为了将该控制器部署到指定节点,执行以下命令为该节点设置标签
[root@master ~]# kubectl label node node2 ingress=true
node/node2 labeled
(2)从nginx Ingress控制器官网下载YAML格式的配置文件deploy.yaml,本例下载的是1.7.1版本的配置文件,将该文件更名
[root@master ~]# wget https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.1/deploy/static/provider/cloud/deploy.yaml
--2025-04-19 16:30:40-- https://raw.githubusercontent.com/kubernetes/ingress-nginx/controller-v1.7.1/deploy/static/provider/cloud/deploy.yaml
正在解析主机 raw.githubusercontent.com (raw.githubusercontent.com)... 185.199.109.133, 185.199.110.133, 185.199.111.133, ...
正在连接 raw.githubusercontent.com (raw.githubusercontent.com)|185.199.109.133|:443... 已连接。
已发出 HTTP 请求,正在等待回应... 200 OK
长度:15704 (15K) [text/plain]
正在保存至: “deploy.yaml”deploy.yaml 100%[===================================================>] 15.34K 49.5KB/s 用时 0.3s 2025-04-19 16:30:43 (49.5 KB/s) - 已保存 “deploy.yaml” [15704/15704])
[root@master ~]# mv deploy.yaml ingress-nginx-controller.yaml
(3)修改该文件,替换其中的镜像仓库的地址,所涉及的3个镜像修改如下
[root@master ~]# cat -n ingress-nginx-controller.yaml
......440 value: /usr/local/lib/libmimalloc.so441 # image: registry.k8s.io/ingress-nginx/controller:v1.7.0@sha256:7612338342a1e7b8090bef78f2a04fffcadd548ccaabe8a47bf7758ff549a5f7442 image: registry.cn-hangzhou.aliyuncs.com/google_containers/nginx-ingress-controller:v1.7.0......538 fieldPath: metadata.namespace539 # image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230312-helm-chart-4.5.2-28-g66a760794@sha256:01d181618f270f2a96c04006f33b2699ad3ccb02da48d0f89b22abce084b292f540 image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1541 imagePullPolicy: IfNotPresent......588 fieldPath: metadata.namespace589 # image: registry.k8s.io/ingress-nginx/kube-webhook-certgen:v20230312-helm-chart-4.5.2-28-g66a760794@sha256:01d181618f270f2a96c04006f33b2699ad3ccb02da48d0f89b22abce084b292f590 image: registry.cn-hangzhou.aliyuncs.com/google_containers/kube-webhook-certgen:v1.1.1......
官方给出的YAML配置文件中拉取的镜像来自registry.k8s.io仓库,Docker Hub并不提供该仓库,从国内拉取这些镜像就会报错(ErrImagePull)。解决的方法是使用国内可访问的镜像仓库代替,本例使用阿里云提供的镜像仓库。
(4)针对部署方式涉及的DaemonSet和HostNetwork定义,继续修改以上文件中名为ingress-nginx-controller的Deployment配置部分相关内容
[root@master ~]# cat -n ingress-nginx-controller.yaml
......
390 ---391 apiVersion: apps/v1392 # kind: Deployment393 kind: DaemonSet # 将类型由Deployment改为DaemonSet394 metadata:......401 name: ingress-nginx-controller402 namespace: ingress-nginx497 # 将ClusterFirst改为ClusterFirstWithHostNet,使nginx可以解析集群内部名称498 # dnsPolicy: ClusterFirst499 dnsPolicy: ClusterFirstWithHostNet500 nodeSelector:501 # kubernetes.io/os: linux502 ingress: "true" # 选择部署的节点改为此项设置503 hostNetwork: true # 此项设置是增加的,表示启用主机网络
(5)基于该配置文件创建nginx Ingress控制器
[root@master ~]# kubectl create -f ingress-nginx-controller.yaml
namespace/ingress-nginx created
serviceaccount/ingress-nginx created
serviceaccount/ingress-nginx-admission created
role.rbac.authorization.k8s.io/ingress-nginx created
role.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrole.rbac.authorization.k8s.io/ingress-nginx created
clusterrole.rbac.authorization.k8s.io/ingress-nginx-admission created
rolebinding.rbac.authorization.k8s.io/ingress-nginx created
rolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx created
clusterrolebinding.rbac.authorization.k8s.io/ingress-nginx-admission created
configmap/ingress-nginx-controller created
service/ingress-nginx-controller created
service/ingress-nginx-controller-admission created
daemonset.apps/ingress-nginx-controller created
job.batch/ingress-nginx-admission-create created
job.batch/ingress-nginx-admission-patch created
ingressclass.networking.k8s.io/nginx created
validatingwebhookconfiguration.admissionregistration.k8s.io/ingress-nginx-admission created
该配置文件除了定义了Deployment(本例已改为DaemonSet)和Service外,还定义了名称空间、服务账号等配套的Kubernetes对象。所创建的对象都属于ingress-nginx名称空间。
(6)查看相关的Pod部署和运行情况
[root@master ~]# kubectl get pods --namespace=ingress-nginx -o wide
NAME READY STATUS RESTARTS AGE IP NODE NOMINATED NODE READINESS GATES
ingress-nginx-admission-create-mw29n 0/1 Completed 0 90s 10.244.166.130 node1 <none> <none>
ingress-nginx-admission-patch-gl8x4 0/1 Completed 0 90s 10.244.166.129 node1 <none> <none>
ingress-nginx-controller-9pfcj 0/1 Running 0 90s 192.168.10.32 node2 <none> <none>
可以发现,nginx Ingress控制器最终在node2节点上运行,其他两个pod已经结束运行,说明仅是部署过程中所需执行的程序。
(7)查看相关的service的运行情况
[root@master ~]# kubectl get svc -n ingress-nginx
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
ingress-nginx-controller LoadBalancer 10.102.234.10 <pending> 80:31156/TCP,443:31454/TCP 3m2s
ingress-nginx-controller-admission ClusterIP 10.101.83.6 <none> 443/TCP 3m1s
(8)在集群内部访问该控制器发布的服务进行测试
[root@master ~]# curl 192.168.10.32
<html>
<head><title>404 Not Found</title></head>
<body>
<center><h1>404 Not Found</h1></center>
<hr><center>nginx</center>
</body>
</html>
可以发现,该控制器就是一个nginx服务器,生成有默认的后端Pod,直接访问节点主机会返回404错误。
3.本地实际测试
完成上述安装后,可以创建简单的Ingress进行实际测试
(1)创建一个运行简单Web服务器的Deployment和相应的Service
[root@master ~]# kubectl create deployment demo --image=httpd --port=80
deployment.apps/demo created
[root@master ~]# kubectl expose deployment demo
service/demo exposed
(2)创建Ingress,下面的例子使用映射到本地主机的主机
[root@master ~]# kubectl create ingress demo-localhost --class=nginx --rule="demo.localdev.me/*=demo:80"
ingress.networking.k8s.io/demo-localhost created
(3)将一个本地端口转发到Ingress控制器
[root@master ~]# kubectl port-forward --namespace=ingress-nginx service/ingress-nginx-controller 8080:80
Forwarding from 127.0.0.1:8080 -> 80
Forwarding from [::1]:8080 -> 80
Handling connection for 8080
(4)在控制平面节点上测试
[root@master ~]# curl demo.localdev.me:8080
<html><body><h1>It works!</h1></body></html>
结果显示,可以通过Ingress访问后端的服务。
(5)删除创建的Ingress和Deployment及Service
[root@master ~]# kubectl delete ingress demo-localhost
ingress.networking.k8s.io "demo-localhost" deleted
[root@master ~]# kubectl delete deploy/demo svc/demo
deployment.apps "demo" deleted
service "demo" deleted
五、使用Ingress对外发布应用程序
部署了nginx Ingress控制器之后就可以使用Ingress对外发布应用程序
1.使用Deployment和Service部署和发布应用程序
由Ingress发布的是Service定义的应用程序,首先要创建Service。这里分别为nginx和Tomcat两个Web服务器创建Service以用于示范。
(1)编写nginx的Deployment和Service配置文件,将其命名为nginx-foringress.yaml。
[root@master ~]# vim nginx-foringress.yaml
[root@master ~]# cat nginx-foringress.yaml
apiVersion: apps/v1 # 版本号
kind: Deployment # 类型为Deployment
metadata: # 元数据name: nginx-deploy labels: # 标签app: nginx-deploy
spec: # 详细信息replicas: 2 # 副本数量selector: # 选择器,指定该控制器管理哪些PodmatchLabels: # 匹配规则app: nginx-podtemplate: # 定义模板,当副本数量不足时会根据模板定义创建Pod副本metadata:labels:app: nginx-pod # Pod的标签spec:containers: # 容器列表(本例仅定义一个容器)- name: nginx # 容器的名称image: nginx:1.14.2 # 容器所用的镜像ports:- name: nginx-portcontainerPort: 80 # 容器需要暴露的端口---
apiVersion: v1
kind: Service
metadata:name: nginx-svc #设置service的显示名字
spec:ports:- port: 80 #让集群知道service绑定的端口targetPort: 80 #目标Pod的端口selector:app: nginx-pod #指定pod的标签[root@master ~]#
(2)编写Tomcat的Deployment和Service文件,将其命名为tomcat-foringress.yaml
[root@master ~]# vim tomcat-foringress.yaml
[root@master ~]# cat tomcat-foringress.yaml
apiVersion: apps/v1 # 版本号
kind: Deployment # 类型为Deployment
metadata: # 元数据name: tomcat-deploy
spec:replicas: 3selector: # 选择器,指定该控制器管理哪些PodmatchLabels:app: tomcat-podtemplate:metadata:labels:app: tomcat-podspec:containers:- name: tomcatimage: tomcat:8.0-alpine # 容器所用的镜像ports:- containerPort: 8080 # 容器需要暴露的端口---
apiVersion: v1
kind: Service
metadata:name: tomcat-svc #设置service的显示名字
spec:selector:app: tomcat-pod # 指定pod的标签ports:- port: 8080 #让集群知道service绑定的端口targetPort: 8080 #目标Pod的端口
(3)执行创建
[root@master ~]# kubectl apply -f nginx-foringress.yaml
deployment.apps/nginx-deploy created
service/nginx-svc created
[root@master ~]# kubectl apply -f tomcat-foringress.yaml
deployment.apps/tomcat-deploy created
service/tomcat-svc created
(4)查看Service列表,可以发现新创建的两个Service的类型都是默认的ClusterIP,只能在集群内部访问
[root@master ~]# kubectl get svc
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
kubernetes ClusterIP 10.96.0.1 <none> 443/TCP 27d
nginx-svc ClusterIP 10.110.223.241 <none> 80/TCP 89s
tomcat-svc ClusterIP 10.98.106.182 <none> 8080/TCP 80s
2.使用Ingress对外发布上述Service
用Service发布的应用程序可以通过Ingress基于HTTP或HTTPS进一步对外发布,这需要创建Ingress。
(1)编写定义Ingress配置文件,将其命名为http-ingress.yaml
[root@master ~]# vim http-ingress.yaml
[root@master ~]# cat http-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:name: http-ingress
spec:ingressClassName: nginxrules:- host: nginx.abc.com # 域名http:paths:- path: /pathType: Prefixbackend:service:name: nginx-svcport: number: 80- host: tomcat.abc.com # 域名http:paths:- path: /pathType: Prefixbackend:service: name: tomcat-svcport:number: 8080
这里定义了两个后端Service,由不同的域名进行转发。
(2)基于上述文件Ingress配置文件创建Ingress
[root@master ~]# kubectl apply -f http-ingress.yaml
ingress.networking.k8s.io/http-ingress created
(3)查看Ingress
[root@master ~]# kubectl get ing -o wide
NAME CLASS HOSTS ADDRESS PORTS AGE
http-ingress nginx nginx.abc.com,tomcat.abc.com 80 41s
(4)查看创建的Ingress的详细信息
[root@master ~]# kubectl describe ing http-ingress
Name: http-ingress
Labels: <none>
Namespace: default
Address:
Ingress Class: nginx
Default backend: <default>
Rules:Host Path Backends---- ---- --------nginx.abc.com / nginx-svc:80 (10.244.104.4:80,10.244.166.132:80)tomcat.abc.com / tomcat-svc:8080 (10.244.104.5:8080,10.244.166.133:8080,10.244.166.134:8080)
Annotations: <none>
Events:Type Reason Age From Message---- ------ ---- ---- -------Normal Sync 2m2s nginx-ingress-controller Scheduled for sync
可以发现,该Ingress提供两个路由规则,分别指向后端nginx和Tomcat这两个Service,每个Service都有各自的Pod副本。
3.访问Ingress发布的应用程序
在控制平面上编辑域名解析
[root@master ~]# vim /etc/hosts
[root@master ~]# cat /etc/hosts
127.0.0.1 localhost localhost.localdomain localhost4 localhost4.localdomain4
::1 localhost localhost.localdomain localhost6 localhost6.localdomain6
192.168.10.30 master
192.168.10.31 node1
192.168.10.32 node2 nginx.abc.com tomcat.abc.com
验证
[root@master ~]# curl nginx.abc.com
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!</title>
<style>body {width: 35em;margin: 0 auto;font-family: Tahoma, Verdana, Arial, sans-serif;}
</style>
</head>
<body>
<h1>Welcome to nginx!</h1>
<p>If you see this page, the nginx web server is successfully installed and
working. Further configuration is required.</p><p>For online documentation and support please refer to
<a href="http://nginx.org/">nginx.org</a>.<br/>
Commercial support is available at
<a href="http://nginx.com/">nginx.com</a>.</p><p><em>Thank you for using nginx.</em></p>
</body>
</html>
[root@master ~]# curl tomcat.abc.com
......<h1>Apache Tomcat/8.0.53</h1>......
可以发现,Ingress根据不同的域名转发到不同后端的应用程序,证明已经成功地部署了Ingress。
删除本例所有对象
[root@master ~]# kubectl delete -f http-ingress.yaml
ingress.networking.k8s.io "http-ingress" deleted
[root@master ~]# kubectl delete -f tomcat-foringress.yaml
deployment.apps "tomcat-deploy" deleted
service "tomcat-svc" deleted
[root@master ~]# kubectl delete -f nginx-foringress.yaml
deployment.apps "nginx-deploy" deleted
service "nginx-svc" deleted