Почему этот Kubernetes Ingress не принимает трафик? - PullRequest
0 голосов
/ 25 сентября 2019

Я пытаюсь настроить простой веб-сервер HTTP на Kubernetes и выставить его с внешним эфемерным IP.Однако при запуске и попытке посетить один из URL-адресов на x.x.x.x/something я получаю:

Error: Server Error
The server encountered a temporary error and could not complete your request.
Please try again in 30 seconds.

Моя конфигурация просто:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: web
  labels:
    app: web
spec:
  replicas: 1
  selector:
    matchLabels:
      app: web
  template:
    metadata:
      labels:
        app: web
    spec:
      containers:
      - name: web
        image: gcr.io/my-repo-name
        ports:
        - containerPort: 8080
        livenessProbe:
          httpGet:
            path: /healthz
            port: 8080
        readinessProbe:
          initialDelaySeconds: 10
          httpGet:
            path: /healthz
            port: 8080
---
apiVersion: v1
kind: Service
metadata:
  name: web-balancer-service
spec:
  selector:
    app: web
  type: NodePort
  ports:
  - protocol: TCP
    port: 8080
    targetPort: 32111
---
apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: my-ingress-app
spec:
  backend:
    serviceName: web-balancer-service
    servicePort: 8080

Если я опишу вход Я вижу, что бэкэнд "Неизвестно".Есть ли проблема с моей спецификацией?

Name:             my-ingress-app
Namespace:        default
Address:          x.x.x.x
Default backend:  web-balancer-service:8080 (10.60.0.57:32111)
Rules:
  Host  Path  Backends
  ----  ----  --------
  *     *     web-balancer-service:8080 (10.60.0.57:32111)
Annotations:
  ingress.kubernetes.io/backends:         {"k8s-be-30330--f4bbd8cbe40f4567":"Unknown"}
  ingress.kubernetes.io/forwarding-rule:  k8s-fw-default-my-ingress-app--f4bbd8cbe40f4567
  ingress.kubernetes.io/target-proxy:     k8s-tp-default-my-ingress-app--f4bbd8cbe40f4567
  ingress.kubernetes.io/url-map:          k8s-um-default-my-ingress-app--f4bbd8cbe40f4567
Events:
  Type    Reason  Age    From                     Message
  ----    ------  ----   ----                     -------
  Normal  ADD     7m18s  loadbalancer-controller  default/my-ingress-app
  Normal  CREATE  6m12s  loadbalancer-controller  ip: x.x.x.x

1 Ответ

2 голосов
/ 25 сентября 2019

Сообщение об ошибке, которое вы получаете, является ошибкой от Google Kubernetes Engine (GKE), поэтому я предполагаю, что вы работаете в GKE в Google Cloud.

Сначала убедитесь, что контейнеры (модули)развертывание) на самом деле прослушивают порт 32111.Вы имеете это как targetPort в службе, что означает, что служба будет получать трафик через порт 8080, но отправлять их на порт 32111 соответствующих ей модулей.Похоже:

--(traffic)---> :8080 (service) ---> :32111 (pods)

Я подозреваю это, потому что в спецификации вашего модуля есть containerPort: 8080, что является показателем того, что модуль на самом деле также слушает 8080, а не 32111.

Поэтому, во-первых, попробуйте изменить targetPort Сервиса также на 8080.

По прошествии некоторого времени, если он не начинает работать, проверьте, нев вашем кластере действительно включена балансировка нагрузки HTTP.Это выглядит так, когда вы создаете кластер в Google Cloud Console: screenshot

В существующем кластере перейдите к его деталям на консоли GCP и проверьте раздел дополнений:

addons

...