nginx-ingress-controller通过--ingress-class参数来决定监控哪些ingress进行nginx规则的写入
kubectl get deploy nginx-ingress-controller -n ingress-nginx-internal -o yaml |more
containers:
- args:
- /nginx-ingress-controller
- --http-port=8088
- --https-port=8113
- --default-server-port=8282
- --ingress-class=nginx-internal
- --configmap=$(POD_NAMESPACE)/nginx-configuration
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --annotations-prefix=nginx.ingress.kubernetes.io
创建ingress的时候通过annotations(kubernetes.io/ingress.class:)来决定由哪个nginx-ingress-controller来监控
kubectl get ingress grafana-ingress -n aimaster-web -o yaml |more
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
annotations:
kubectl.kubernetes.io/last-applied-configuration: |
{"apiVersion":"networking.k8s.io/v1beta1","kind":"Ingress","metadata":{"annotations":{"kubernetes.io/ingress.class":"nginx-internal","nginx.ingress.kubernetes.io/rewrite-target":"/$2"},"name":"grafana-
ingress","namespace":"aimaster-web"},"spec":{"rules":[{"http":{"paths":[{"backend":{"serviceName":"grafana-dashboard","servicePort":"http"},"path":"/grafana(/|$)(.*)"}]}}]}}
kubernetes.io/ingress.class: nginx-internal
nginx.ingress.kubernetes.io/rewrite-target: /$2
creationTimestamp: "2022-04-18T07:09:53Z"
generation: 1
name: grafana-ingress
namespace: aimaster-web
resourceVersion: "1506853"
selfLink: /apis/extensions/v1beta1/namespaces/aimaster-web/ingresses/grafana-ingress
uid: db9ace3f-a85d-4bbc-b282-22a624dac7b6
spec:
rules:
- http:
paths:
- backend:
serviceName: grafana-dashboard
servicePort: http
path: /grafana(/|$)(.*)
pathType: ImplementationSpecific
status:
loadBalancer:
ingress:
- {}
上图中的nginx pod通过pod -> ports -> hostport将端口映射到服务器的端口(80,443),这样pod中的nginx就相当于服务器上的nginx一样用