Ошибка входа Kubernetes Nginx в phpmyadmin 502

#kubernetes #phpmyadmin #kubernetes-ingress #nginx-ingress

#kubernetes #phpmyadmin #kubernetes- вход #nginx-вход

Вопрос:

Я пытаюсь решить довольно досадную проблему, с которой я сталкиваюсь при использовании Kubernetes. Когда я пытаюсь связаться с phpMyAdmin на моем сервере, он возвращает ошибку шлюза Nginx 502.

Моя структура в моем кластере выглядит следующим образом. Я использую балансировщик нагрузки Nginx ingress на DigitalOcean для получения трафика в мой кластер. Затем он передает мой вход (в первом блоке кода), который распределяет трафик по поддоменам. Когда трафик поступает на поддомен phpmyadmin, запрос передается в «phpmyadmin-service» с сервисным портом 8085.

 apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: nginx-ingress
  annotations:
    kubernetes.io/ingress.class: nginx
    ingress.kubernetes.io/rewrite-target: /
spec:
  rules:
  - host: "app1.example.com"
    http:
      paths:
      - path: /
        backend:
          serviceName: app1-service
          servicePort: 80 
  - host: "phpmyadmin.example.com"
    http:
      paths:
      - path: /
        backend:
          serviceName: phpmyadmin-service
          servicePort: 8085
  

Затем служба получает запрос и передает его в развертывание phpmyadmin-deployment. Это развертывание, в котором выполняется докер-образ phpmyadmin / phpmyadmin: fpm.

 apiVersion: apps/v1
kind: Deployment
metadata:
  creationTimestamp: null
  name: phpmyadmin-deployment
  labels:
    app: phpmyadmin
spec:
  selector:
    matchLabels:
      app: phpmyadmin
  template:
    metadata:
      creationTimestamp: null
      labels:
        app: phpmyadmin
    spec:
      containers:
        - name: phpmyadmin
          image: phpmyadmin/phpmyadmin:fpm
          ports:
          - containerPort: 8087
          env:
          - name: PMA_ABSOLUTE_URI
            value: 'phpmyadmin.example.com'
          - name: PMA_HOST
            value: mysql
          - name: PMA_PORT
            value: "3306"
          - name: MYSQL_ROOT_PASSWORD
            valueFrom:
                secretKeyRef:
                  name: mysql-secrets
                  key: rootpw
---
apiVersion: v1
kind: Service
metadata:
  name: phpmyadmin-service
spec:
  type: ClusterIP
  selector:
    app: phpmyadmin
  ports:
  - port: 8085
    targetPort: 8087
  

Итак, что-то выдает мне ошибку 502 Bad Gateway, и я не знаю, что это такое. Заранее спасибо за ответ!

Комментарии:

1. 1. Можете ли вы проверить kubectl get pods , находится ли ваше развертывание phpmyadmin в запущенном состоянии? 2. Можете ли вы проверить kubectl logs , происходит ли что-то неправильное в развертывании phpmyadmin? 3.Is ваш образ phpmyadmin определенно прослушивается через порт 8087? Я бы сказал, что оно должно быть 80, если вы его не изменили.

2. 1. Да, он запущен. 2. Нет журналов, просто говорит, что он готов. 3. Да, это определенно прослушивание. Я изменил его на этот, 80 тоже не работает.

3. Привет @Jurjen, просто чтобы уточнить, вы изменили порт в образе dockerfile? Если вы изменили только контейнерный порт в своем развертывании, то этого недостаточно. Я пытался воспроизвести вашу проблему, но я не смог заставить ее работать с phpmyadmin/phpmyadmin:fpm . Я бы рекомендовал phpmyadmin/phpmyadmin вместо этого использовать изображение, я проверил, и оно работает на порту 80. Не могли бы вы попробовать с этим?