# Ingress介绍
回顾Service
- Servie对外暴露服务主要NodePort和LoadBlancer
- NodePort会占用很多进群端口号
- LB方式每个service需要一个LB,且需要集群外设备支持
k8s提供了 Ingress 资源对象
- 一个NodePort或者一个LB满足多个Service的需求

- Ingress相当于一个 7 层负载均衡器
- k8s 对反向代理的一个抽象,工作原理类似于Nginx
- Ingress建设诸多规则,Ingress Controller通过监听配置转化成Nginx的方向代理配置,对外提供服务
# Ingress工作原理工作流程
- 用户编写Ingress规则,定义域名对应k8s集群哪个Service
- Ingress控制器动态干部职工Ingress服务变化,生成Nginx配置
- 将生成的Nginx配置写入到Nginx服务,动态更新

# Ingress controller 软件安装
mkdir ingress-controller && cd ingress-controller
wget https://githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/mandatory.yml
wget https://githubusercontent.com/kubernetes/ingress-nginx/nginx-0.30.0/deploy/static/provider/baremetal/service-nodeport.yaml
# 修改mandatory.yaml
# 将 quay.io/kubernets-ingress-controller/nginx-ingress-contoroller:0.30.0
# 为 quay-mirror.qiniu.com/kubernets-ingress-controller/nginx-ingress-contoroller:0.30.0
kubectl apply -f ./
kubectl get pod-n ingress-nginx
kubectl get svc -n ingress-nginx
1
2
3
4
5
6
7
8
9
10
11
12
2
3
4
5
6
7
8
9
10
11
12
# HTTP代理
# yaml 配置文件
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: ingress-http
namespace: dev
spec:
rules:
- host: nginx.itheima.com
http:
paths:
- path: /
backend:
serviceName: nginx-service
servicePort: 80
- host: tomcat.itheima.com
http:
paths:
- path: /
backend:
serviceName: tomcat-service
servicePort: 8080
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
- 访问 spec.rules.host: 域名,则转发到对应的service,的对应端口
kubectl create -f xx.ymlkubectl get ing ingress-http -n devkubectl describe ing ingress-http -n dev