簡體   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