#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. Не могли бы вы попробовать с этим?