Я протестировал это поведение на своем кластере. Когда я попробовал конфигурацию, предоставленную вами, я получил Warning
:
@microk8s:~$ microk8s kubectl get ing
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
Также, если вы опишете это, вы получите тот же Warning
.
@microk8s:~$ kk describe ing
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
Name: hello-ing
Namespace: default
Address:
Default backend: default-http-backend:80 (<error: endpoints "default-http-backend" not found>)
Rules:
Host Path Backends
---- ---- --------
*
/hello hello-svc:80 10.1.128.202:8080)
В отношении этой ошибки есть аналогичный вопрос Github.
Вывод, который вы видите, является стандартным для случаев, когда нет серверной части по умолчанию https://github.com/kubernetes/kubernetes/blob/master/staging/src/k8s.io/kubectl/pkg/describe/describe.go#L2393 а>
Однако он работает нормально.
$ curl 127.0.0.1/hello
Hello, world!
Version: 1.0.0
Hostname: hello-647c466dbc-99rml
Если вы добавите бэкэнд по умолчанию, вы получите следующий результат: :
Warning: extensions/v1beta1 Ingress is deprecated in v1.14+, unavailable in v1.22+; use networking.k8s.io/v1 Ingress
Name: ingress
Namespace: default
Address: 127.0.0.1
Default backend: test2:80 10.1.128.205:80)
Rules:
Host Path Backends
---- ---- --------
*
/hello hello-svc:80 10.1.128.204:8080)
и Ingress
выглядит так:
spec:
backend:
serviceName: test2
servicePort: 80
rules:
- http:
paths:
- path: /hello
backend:
serviceName: hello-svc
servicePort: 80
Хотя я не могу понять, почему то, что работало полгода назад, не работает сейчас.
Поскольку новый apiVersion
немного изменяет синтаксис, добавляя некоторые функции, параметры и т. Д., Может возникнуть ситуация, когда после обновления / обновления некоторые ресурсы больше не могут быть проверены Kubernetes
. Как указано в этой статье.
Для определения объекта в Kubernetes требуется поле apiVersion. Когда у Kubernetes есть выпуск, который обновляет то, что вам доступно, что-то меняет в его API, создается новая версия apiVersion. Однако в официальной документации Kubernetes мало указаний по apiVersion. Это руководство дает вам шпаргалку о том, какую версию использовать, объясняет каждую версию и дает вам график выпусков.
Если вы измените только apiVersion в своем YAML, вы получите ошибку:
error: error validating "ingress.yaml": error validating data: [ValidationError(Ingress.spec.rules[0].http.paths[0].backend): unknown field "serviceName" in io.k8s.api.networking.v1.IngressBackend, ValidationError(Ingress.spec.rules[0].http.paths[0].backend): unknown field "servicePort" in io.k8s.api.networking.v1.IngressBackend]; if you choose to ignore these errors, turn validation off with --validate=false
Подводя итог, вы получили это <error: endpoints "default-http-backend" not found>
, поскольку default backend
не было настроено.
Дополнительные сведения можно найти в Kubernetes Api Docs.
person
PjoterS
schedule
24.09.2020
deployment
иservice
? С помощью селекторов илиheadless
? Не могли бы вы поделиться своими YAML (развертывание, svc, вход)? - person PjoterS   schedule 22.09.2020selectors
, однако вы также используетеnginx.ingress.kubernetes.io/rewrite-target: /
, который поддерживается только при использованииNginx Ingress
. Также я не уверен, поддерживается лиrewrite
на MicroK8s. Вы пытались удалить эту аннотацию и использовать пример из документации? - person PjoterS   schedule 22.09.2020curl 127.0.0.1:80/new-path
). Любые идеи? - person Sasha Shpota   schedule 22.09.2020v1beta1
. После того, как я изменил конфигурацию Ingress на эту это сработало. Хотя я не могу понять, почему то, что работало полгода назад, сейчас не работает. - person Sasha Shpota   schedule 23.09.2020