1 Ingress概述
在前面使用Service中的NodePort将服务端口号暴漏以供外部访问,这样显然会存在一些弊端:
- 通过ip+端口的方式对外提供服务
- 每个节点上都会其端口,访问时通过ip+端口进行访问
- 每个端口对应一个应用服务
但是在实际中是通过域名来访问应用的,根据域名跳转到不同端口服务中,所以需要在Service之上再添加一层访问入口,这一层就是Ingress。
2 Ingress工作流程
ingress和pod通过service进行关联,实际访问中ingress作为一个统一的入口,由service关联一组pod。
3 ingress使用
Ingress对外暴露应用,还是首先需要通过Service的NodePort暴露端口,在此基础上再进行操作。
1 创建一个nginx pod
// 创建nginx应用
[root@k8smaster ~]# kubectl create deployment web --image=nginx
deployment.apps/web created
// 将上述应用对外暴露端口
[root@k8smaster ~]# kubectl expose deployment web --port=80 --target-port=80 --type=NodePort
service/web exposed
// 查看
[root@k8smaster ~]# kubectl get pod,svc
NAME READY STATUS RESTARTS AGE
pod/web-5dcb957ccc-rq5k5 1/1 Running 0 92s
NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE
service/kubernetes ClusterIP 10.96.0.1 443/TCP 69d
service/web NodePort 10.106.108.66 80:31558/TCP 28s
2 部署ingress controller
执行yaml文件
3 配置ingress规则
- 编写yaml配置文件
- 运行yaml文件
- 访问测试
windows中配置好域名映射后即可访问