首页 > 解决方案 > Kubernetes Nginx 入口 phpmyadmin 502 错误

问题描述

我正在尝试解决我在使用 Kubernetes 时遇到的一个非常烦人的问题。当我尝试访问服务器上的 PHPMyAdmin 时,它返回 Nginx 502 Bad Gateway错误。

我在集群中的结构如下。我在 DigitalOcean 上使用 Nginx 入口 LoadBalancer 将流量引入我的集群。然后它通过我的入口(在第一个代码块中),它将流量拆分到子域。当流量进入 phpmyadmin 子域时,请求被传递到服务端口 8085 的“phpmyadmin-service”。

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 docker 镜像的部署。

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 错误,我不知道它是什么。提前感谢您的回复!

标签: kubernetesphpmyadminkubernetes-ingressnginx-ingress

解决方案


推荐阅读