#kubernetes-ingress #nginx-ingress
#kubernetes- вход #nginx-вход
Вопрос:
Я настроил контроллер Nginx, как указано в документах https://docs.nginx.com/nginx-ingress-controller/installation/installation-with-manifests /. Я настроил вход с помощью приведенной ниже конфигурации
Входной класс
apiVersion: networking.k8s.io/v1beta1
kind: IngressClass
metadata:
name: nginx
# annotations:
# ingressclass.kubernetes.io/is-default-class: "true"
spec:
controller: nginx.org/ingress-controller
Проникновение
apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
name: hn-service-ingress
spec:
ingressClassName: nginx
rules:
- host: hostnameservice.classpath.com
http:
paths:
- path: /test
backend:
serviceName: hostname-service
servicePort: 80
Ниже приведена ошибка при выполнении describe
команды. Я получаю All hosts are taken by other resources
kubectl describe ingress hn-service-ingress
Name: hn-service-ingress
Namespace: pradeep
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
hostnameservice.classpath.com
/test hostname-service:80 (100.96.1.12:8111,100.96.1.13:8111,100.96.2.13:8111)
Annotations: <none>
Events:
Type Reason Age From Message
---- ------ ---- ---- -------
Warning Rejected 5s nginx-ingress-controller All hosts are taken by other resources
Когда я раньше сверялся с cafe
примером, он работал нормально. Где я ошибаюсь?
Примечание: я настроил балансировщик нагрузки AWS и установил параметр /etc/hosts
указывать на ELB
from AWS с помощью dnslookup.
Комментарии:
1. Я предполагаю, что у вас возникли коллизии хостов , используете ли вы другой вход? Если да, не могли бы вы поделиться им?
2. Я смог решить эту проблему. Произошел еще один вход в другое пространство имен
Ответ №1:
Пожалуйста, имейте в виду, что существует 3 типа Nginx
. Open Source Nginx Ingress Controller
, Nginx Incorporaton
(nginx inc) и Nginx Incorporaton Plus
.
Как я упоминал в комментариях, проблема возникла из-за ресурсов, использующих то же host
самое. Это называется коллизиями хостов.
Столкновение хостов происходит, когда несколько ресурсов настраивают один и тот же хост. Ingress Controller
Поддерживает два варианта обработки коллизий хостов:
- Выбор победителя
Если несколько ресурсов претендуют на один и тот же хост, входной контроллер выберет победителя на основе метки времени создания ресурсов: победит самый старый ресурс. В случае, если существует более одного самого старого ресурса (их метка времени создания одинакова), контроллер входа выберет ресурс с лексикографически наименьшим uid.
- Объединение конфигурации для одного и того же хоста
Можно объединить конфигурацию для нескольких входных ресурсов для одного и того же хоста. Одним из распространенных вариантов использования этого подхода является распределение ресурсов по нескольким пространствам имен.
OP подтвердил, что это было решено с помощью изменений, внесенных в другой Ingress
ресурс в другом namespace
.
Я смог решить эту проблему. Произошел еще один вход в другое пространство имен
Комментарии:
1. docs.nginx.com изменился. Новый URL: docs.nginx.com/nginx-ingress-controller/configuration /…