Доступ к контроллеру входа nginx через порт 80
Я могу получить доступ к nginx ingress controller
на NodePort
, Моя цель - получить доступ к контроллеру на port 80
,
Выход из
kubectl -n ingress-nginx describe service/ingress-nginx
Name: ingress-nginx
Namespace: ingress-nginx
Labels: app.kubernetes.io/name=ingress-nginx
app.kubernetes.io/part-of=ingress-nginx
Annotations: kubectl.kubernetes.io/last-applied-configuration:
{"apiVersion":"v1","kind":"Service","metadata":{"annotations":{},"labels":{"app.kubernetes.io/name":"ingress-nginx","app.kubernetes.io/par...
Selector: app.kubernetes.io/name=ingress-nginx,app.kubernetes.io/part-of=ingress-nginx
Type: NodePort
IP: 10.100.48.223
Port: http 80/TCP
TargetPort: 80/TCP
NodePort: http 30734/TCP
Endpoints: 192.168.0.8:80
Port: https 443/TCP
TargetPort: 443/TCP
NodePort: https 32609/TCP
Endpoints: 192.168.0.8:443
Session Affinity: None
External Traffic Policy: Cluster
Events: <none>
У меня есть несколько идей для решения этой проблемы:
- перенаправить входящий трафик на порт 30734 на порт 80 через
iptables
- измените диапазон для портов узлов, чтобы порт 80 также мог быть портом узлов
Я не уверен, что это обычные способы сделать это, поэтому я хотел бы услышать, как вы обычно справляетесь с этим. Вероятно, есть еще один необходимый компонент?
2 ответа
Решение
Обычный способ справиться с этим - использовать сервис режима LoadBalancer, который помещает облачный балансировщик нагрузки перед существующим NodePort, чтобы вы могли переназначить обычные порты обратно на него.
Вы должны измениться с NodePort
в LoadBalancer
введите для вашего сервиса nginx. Пример манифеста выглядит так:
spec:
ports:
- name: nginx
port: 80
protocol: TCP
targetPort: 8000 // Your nginx port
type: LoadBalancer