#kubernetes #kubernetes-ingress
#kubernetes #kubernetes-вход
Вопрос:
Я новичок в k8s. Я развернул ingress на minikube, и я обнаружил, что его адрес localhost
такой, каким он не должен быть, я думаю. Для этого я не знаю, как продолжить, потому что я должен отредактировать /etc/hosts/
, чтобы добавить элемент dns, но нет, я не мог.
И это мой файл конфигурации
kiloson@ubuntu:~$ cat kubia-ingress.yaml
apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
name: kubia
annotations:
nginx.ingress.kubernetes.io/rewrite-target: /$1
spec:
rules:
- host: kubia.example.com
http:
paths:
- path: /
pathType: Prefix
backend:
service:
name: kubia-nodeport
port:
number: 80
версия minikube
kiloson@ubuntu:~$ minikube version
minikube version: v1.24.0
commit: 76b94fb3c4e8ac5062daf70d60cf03ddcc0a741b
Информация об Ubuntu
kiloson@ubuntu:~$ neofetch
.-/ oossssoo /-. kiloson@ubuntu
`: ssssssssssssssssss :` --------------
- ssssssssssssssssssyyssss - OS: Ubuntu 20.04.3 LTS x86_64
.ossssssssssssssssssdMMMNysssso. Host: Virtual Machine 7.0
/ssssssssssshdmmNNmmyNMMMMhssssss/ Kernel: 5.11.0-1022-azure
ssssssssshmydMMMMMMMNddddyssssssss Uptime: 2 hours, 33 mins
/sssssssshNMMMyhhyyyyhmNMMMNhssssssss/ Packages: 648 (dpkg), 4 (snap)
.ssssssssdMMMNhsssssssssshNMMMdssssssss. Shell: bash 5.0.17
sssshhhyNMMNyssssssssssssyNMMMysssssss Terminal: /dev/pts/0
ossyNMMMNyMMhsssssssssssssshmmmhssssssso CPU: Intel Xeon E5-2673 v4 (2) @ 2.294GHz
ossyNMMMNyMMhsssssssssssssshmmmhssssssso GPU: 00:08.0 Microsoft Corporation Hyper-V virtual VGA
sssshhhyNMMNyssssssssssssyNMMMysssssss Memory: 1493MiB / 7959MiB
.ssssssssdMMMNhsssssssssshNMMMdssssssss.
/sssssssshNMMMyhhyyyyhdNMMMNhssssssss/
sssssssssdmydMMMMMMMMddddyssssssss
/ssssssssssshdmNNNNmyNMMMMhssssss/
.ossssssssssssssssssdMMMNysssso.
- sssssssssssssssssyyyssss -
`: ssssssssssssssssss :`
.-/ oossssoo /-.
Комментарии:
1.
localhost
адрес указан правильно. Вот как работает minikube. Вы можете получить IP-адрес своего кластера minikube сminikube ip
помощью команды. Вы включили ingress заранее сminikube addons enable ingress
помощью?2. Вы правы, я использовал IP-адрес узла, и он работает. Но я видел в официальных документах, что вместо доменного имени указан фактический IP, интересно, почему это произошло. И я уверен, что я включил ingress в minikube. Спасибо!
Ответ №1:
localhost
адрес указан правильно. Вот как работает minikube.
Вы можете получить IP-адрес своего кластера minikube с помощью
minikube ip
или
minikube service <service-name> --url
Ответ №2:
Я некоторое время ломал голову над этим и только что заработал, поэтому я добавлю цвет к другим ответам.
Прежде всего, как указано в этом соответствующем вопросе, при первоначальном запуске minikube addons enable ingress
он печатается After the addon is enabled, please run "minikube tunnel" and your ingress resources would be available at "127.0.0.1"
.
После выполнения шагов в руководстве и решения проблемы в этом вопросе я смог зайти в приложение hello-world, запустив minikube tunnel
и добавив 127.0.0.1 hello-world.info
в my /etc/hosts
.
Я не уверен, почему выполнение учебника kubectl get ingress
возвращает нелокальный IP-адрес хоста, но возвращается localhost
при локальном запуске, но, похоже, основная проблема здесь заключается в том, что при создании входа в контейнеры docker, в которых запущен minikube, вам нужно перенаправить трафик в контейнеры, minikube tunnel
чтобы попасть на открытый входв minikube.
Ответ №3:
Я столкнулся с той же проблемой.
--publish-status-address=localhost
Задается в аргументах nginx-ingress-controller. https://github.com/kubernetes/minikube/blob/1b25cac7f5735be22f88a159b35b1996abba3c73/deploy/addons/ingress/ingress-deploy.yaml.tmpl#L373
Я удалил этот аргумент, и он сработал.
$ kubectl edit deployments.apps -n ingress-nginx ingress-nginx-controller
- args:
- /nginx-ingress-controller
- --election-id=ingress-controller-leader
- --controller-class=k8s.io/ingress-nginx
- --watch-ingress-without-class=true
- - --publish-status-address=localhost
- --configmap=$(POD_NAMESPACE)/ingress-nginx-controller
- --report-node-internal-ip-address
- --tcp-services-configmap=$(POD_NAMESPACE)/tcp-services
- --udp-services-configmap=$(POD_NAMESPACE)/udp-services
- --validating-webhook=:8443
- --validating-webhook-certificate=/usr/local/certificates/cert
- --validating-webhook-key=/usr/local/certificates/key
Комментарии:
1. Да, я запускаю minikube с ExternalDNS, и после его
publish-status-address=localhost
появления произошел сбой, и я не мог понять, как это предотвратить, поэтому теперь у меня просто есть скрипт для его удаления после развертывания.
Ответ №4:
Чтобы включить ingress в minikube local, просто запустите это:-
сначала проверьте, включены ли дополнения для ingress или нет
список дополнений minikube
если он не включен, выполните следующую команду:-
дополнения minikube включают ingress