使用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