首页 > 解决方案 > GCP 负载平衡器后端状态未知

问题描述

我大吃一惊。

我有一个登台和生产环境。两种环境都有相同的部署、服务、入口、防火墙规则,并且都提供一个200./

但是,在打开暂存环境并配置相同的入口后,暂存服务失败并显示 Some backend services are in UNKNOWN state. 生产仍在进行中。

前端和后端 Pod 都已在 GKE 上准备就绪。我已经手动测试了健康检查,当我访问时它们通过了/

我在日志或 gcp 文档中看不到任何指向正确方向的内容。我可能打破了什么?

ingress.yaml

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: fanout-ingress
  annotations:
    kubernetes.io/ingress.global-static-ip-name: "STATIC-IP"
spec:
  backend:
    serviceName: frontend
    servicePort: 8080
  tls:
  - hosts:
    - <DOMAIN>
    secretName: staging-tls
  rules:
  - host: <DOMAIN>
    http:
      paths:
      - path: /*
        backend:
          serviceName: frontend
          servicePort: 8080
      - path: /backend/*
        backend:
          serviceName: backend
          servicePort: 8080

frontend.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: frontend
  name: frontend
  namespace: default
spec:
  ports:
  - nodePort: 30664
    port: 8080
    protocol: TCP
    targetPort: 8080
  selector:
    app: frontend
  type: NodePort
---
apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  generation: 15
  labels:
    app: frontend
  name: frontend
  namespace: default
spec:
  progressDeadlineSeconds: 600
  replicas: 1
  selector:
    matchLabels:
      app: frontend
  minReadySeconds: 5
  template:
    metadata:
      labels:
        app: frontend
    spec:
      containers:
      - image: <our-image>
        name: frontend
        ports:
        - containerPort: 8080
          protocol: TCP
        readinessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          periodSeconds: 30
          timeoutSeconds: 3
        livenessProbe:
          httpGet:
            path: /
            port: 8080
          initialDelaySeconds: 60
          periodSeconds: 30
          timeoutSeconds: 3

标签: kubernetesgoogle-cloud-platformgoogle-kubernetes-engine

解决方案


昨天连本指南https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer

没用。不知道发生了什么,但即使等待 30 分钟 + 入口正在报告后端的 UNKNOWN 状态。

24 小时后,情况似乎好多了。L7 http 入口有效,但报告健康后端有很大延迟。


推荐阅读