概述
使用Service里面的NodePort可以将端口号对外暴露,通过IP+端口号进行访问。
NodePort缺陷:
- 在每个节点上都会用到端口,在访问时候在任何节点,通过节点IP+端口可以实现访问。意味着每个端口只能使用一次,一个端口对应一个应用。
- 实际访问中都是用域名,根据不同域名跳转到不同端口服务中。
Ingress和Pod关系
pod和ingress通过service关联。
ingress作为统一入口,由service关联一组pod
Ingress工作流程
使用Ingress
- 部署Ingress Controller
- 创建Ingress规则
kubectl create deployment web --image=nginx
kubectl expose deployment web --port=80 --target-port=80 --type=NodePort
网上下载ingress-controller.yaml
apiVersion: v1
kind: Namespace
metadata:
name: ingress-nginx
labels:
app.kubernetes.io/name: ingress-nginx
app.kubernetes.io/part-of: ingress-nginx
---
...
...
将hostNetwork改为true
kubectl apply -f ingress-controller.yaml
查看ingress controller状态:
kubectl get pods -n ingress-nginx
创建ingress规则:
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: example-ingress
spec:
rules:
- host: example.ingressdemo.com
http:
paths:
- path: /
backend:
serviceName: web
servicePort: 80
kubectl apply -f
在Windows系统hosts文件中添加域名访问规则
192.168.44.145 example.ingressdemo.com
kubectl get ing