Вход в Kubernetes недоступен (локальный хост)
Я устанавливаю минимальный кластер Kubernetes на localhost на машине с Linux (начиная с hack/local-up-cluster из извлеченного репозитория). В моем файле развертывания я определил вход, который должен сделать службы, развернутые в кластере, доступными извне. Deployment.yml:
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
name: foo-service-deployment
spec:
replicas: 2
template:
metadata:
labels:
app: foo-service
spec:
containers:
- name: foo-service
image: images/fooservice
imagePullPolicy: IfNotPresent
ports:
- containerPort: 7778
---
apiVersion: v1
kind: Service
metadata:
name: foo-service-service
spec:
ports:
- port: 7778
selector:
app: foo-service
type: NodePort
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
name: api-gateway-ingress
spec:
rules:
- host:
http:
paths:
- path: /foo
backend:
serviceName: foo-service-service
servicePort: 7779
- path: /bar
backend:
serviceName: bar-service-service
servicePort: 7776
Я не могу получить доступ к услугам. kubectl description показывает следующее для моего входа:
Name: api-gateway-ingress
Namespace: default
Address:
Default backend: default-http-backend:80 (<none>)
Rules:
Host Path Backends
---- ---- --------
*
/foo foo-service-service:7779 (<none>)
/bar bar-service-service:7776 (<none>)
Annotations:
Events: <none>
Это потому, что для моего входа не задан адрес, который еще не виден внешнему миру?
1 ответ
Ingress
Ресурс - это просто определение для вашего кластера, как обрабатывать входящий трафик. Для обработки этих определений необходим Ingress Controller; Создание ресурса Ingress без развертывания контроллера Ingress не будет иметь никакого эффекта.
Из документации:
Чтобы ресурс Ingress работал, в кластере должен быть запущен контроллер Ingress. Это в отличие от других типов контроллеров, которые обычно работают как часть
kube-controller-manager
двоичные файлы, которые обычно запускаются автоматически как часть создания кластера. Вам нужно выбрать реализацию входного контроллера, которая лучше всего подходит для вашего кластера, или реализовать ее.
Существует несколько доступных контроллеров Ingress, которые вы можете развернуть самостоятельно (обычно через ресурс Deployment), например, входной контроллер NGINX (который является частью проекта Kubernetes) или сторонние входные контроллеры, такие как Traefik или Voyager.