Вход в 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.

Другие вопросы по тегам