流程示意图
service 可以对外开放端口,如果多个service开放后期运维困难,所以引入了ingress。
nginx-ingress本质上是一个nginx,ingress-controller管理者流量的走向,ingress为其添加规则。
部署nginx-ingress
官网:https://kubernetes.github.io/ingress-nginx/
githup 地址: https://github.com/kubernetes/ingress-nginxhttps://github.com/kubernetes/ingress-nginx
下载部署文件
把 service-nodeport.yaml 和 mandatory.yaml 上传到master节点。
运行 kubectl apply -f yaml文件
部署完成
测试:创建两个web使用ingress发布出来
# web1.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-nginx
labels:
app: web-nginx
spec:
containers:
- image: nginx
name: web-nginx
---
apiVersion: v1
kind: Service
metadata:
labels:
app: web-nginx
name: web-nginx
spec:
ports:
- port: 80
protocol: TCP
targetPort: 80
selector:
app: web-nginx
# web2.yaml
apiVersion: v1
kind: Pod
metadata:
name: web-tomcat
labels:
app: web-tomcat
spec:
containers:
- image: tomcat
name: web-tomcat
---
apiVersion: v1
kind: Service
metadata:
labels:
app: web-tomcat
name: web-tomcat
spec:
ports:
- port: 8080
protocol: TCP
targetPort: 8080
selector:
app: web-tomcat
~
ingress 配置
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: test-ingress
annotations:
kubernetes.io/ingress.class: "nginx"
spec:
rules:
- host: web1.dome.com
http:
paths:
- path:
backend:
serviceName: web-nginx
servicePort: 80
- host: web2.dome.com
http:
paths:
- path:
backend:
serviceName: web-tomcat
servicePort: 8080
展示:
web1
web2
ingress 配置大文件上传
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example-ingress
annotations:
# 注解中添加文件大小配置
nginx.ingress.kubernetes.io/proxy-body-size: "50M"
spec:
rules:
- host: dome1.com
http:
paths:
- path:
backend:
serviceName: dome
servicePort: 80