繁体   English   中英

GKE 入口不适用于 WordPress 部署

[英]GKE ingress is not working with WordPress deployment

我正在尝试在 GKE 上部署 Wordpress,除了入口外一切正常,入口无法连接到后端服务,显示“某些后端服务处于不健康状态”如果有人帮助我,我将不胜感激。

Wordpress 部署 yaml 文件

apiVersion: apps/v1
kind: Deployment
metadata:
  name: wordpress-deployment
  labels:
    app: wordpress
spec:
  replicas: 1
  selector:
    matchLabels:
      app: wordpress
  template:
    metadata:
      labels:
        app: wordpress
    spec:
      containers:
      - name: wordpress
        image: wordpress
        ports:
        - containerPort: 80
        volumeMounts:
          - name: wordpress-persistent-storage
            mountPath: /var/www/html
        env:
        - name: WORDPRESS_DB_HOST
          value: mysql-service
        - name: WORDPRESS_DB_USER
          value: wpuser
        - name: WORDPRESS_DB_PASSWORD
          value: pass@123
        - name: WORDPRESS_DB_NAME
          value: wpdb
        - name: WORDPRESS_DEBUG
          value: "1"
      volumes:
        - name: wordpress-persistent-storage
          persistentVolumeClaim:
            claimName: wordpress-volumeclaim

服务 yaml 文件

apiVersion: v1
kind: Service
metadata:
  name: wordpress-service
spec:
  type: NodePort
  selector:
    app: wordpress
  ports:
  - name: portname
    nodePort: 30100
    port: 80
    targetPort: 80
    

入口 yaml 文件

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wordpress-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: my-address
    networking.gke.io/managed-certificates: managed-cert
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
    - host: example.com 
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: wordpress-service
              port:
                number: 80
                

入口 GCP 控制台

入口 GCP 控制台

GCP 日志

在你的规格

spec:
  rules:
    - host: example.com 
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: wordpress-service
              port:
                number: 80

你不小心有两个不同的后端:一个用于“example.com”,一个基于路径“/”用于其他任何东西。 由于您没有为“example.com”指定后端,Ingress 使用默认后端,它永远不会返回健康状态。

我的猜测是您实际上并不想要“example.com”,因此从规范中删除它应该可以解决您的问题:

apiVersion: networking.k8s.io/v1
kind: Ingress
metadata:
  name: wordpress-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: my-address
    networking.gke.io/managed-certificates: managed-cert
    kubernetes.io/ingress.class: "gce"
spec:
  rules:
    - http:
        paths:
        - path: /
          pathType: Prefix
          backend:
            service:
              name: wordpress-service
              port:
                number: 80

你可以试试go到https://console.cloud.google.com/compute/healthChecks/然后修改wordpress后端的健康检查。 例如,将其从/更改为/wp-admin/images/wordpress-logo.svg解决了我的问题。 这在这篇文章https://serverfault.com/questions/826719/how-to-create-a-url-in-a-wordpress-that-will-return-code-200中有所描述。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM