GCP负载平衡器后端状态未知

时间:2018-08-23 21:29:00

标签: kubernetes google-cloud-platform google-kubernetes-engine

我很惊讶。

我有一个演出和制作环境。两种环境具有相同的部署,服务,入口,防火墙规则,并且都在200上使用/

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

前端和后端吊舱都已在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

5 个答案:

答案 0 :(得分:1)

我认为这是一个错误。我创建了一个新群集,无法复制。如果有人再次遇到这种情况,我建议尝试一个新的群集。

答案 1 :(得分:1)

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

没有用。不知道发生了什么,但甚至等待了30分钟以上,入侵正在报告未知的后端状态。

24小时后,情况似乎好多了。 L7 http ingress可以正常工作,但是报告健康后端的延迟很大。

答案 2 :(得分:0)

您是否仍然遇到此问题?

我尝试按照以下Google公共文档进行复制:Setting up HTTP Load Balancing with Ingress进行部署:

  

使用示例Web应用程序容器映像的Web App,该映像在端口8080上的HTTP服务器上侦听:

但是,它现在似乎正在工作。因此,如果您仍然遇到此问题,请考虑使用public issue对kubernetes / ingress-gce提交Google issue-tracking tool。包含尽可能多的细节,包括要重现的步骤,以便使此问题更清晰可见,并提供更多采样。

  

请注意:

     

问题跟踪程序User Content and Conduct Policy详细介绍了不适合提交给问题跟踪程序的信息类型,其中包括敏感的个人信息和垃圾邮件。请不要在问题跟踪工具中提交不适当的内容。

回购输出$ kubectl describe ing

sunny@test-dev:~$ kubectl describe ing basic-ingress
Name:             basic-ingress
Namespace:        default
Address:          xx.xxx.xxx.228
Default backend:  web:8080 (10.8.2.6:8080)
Rules:
Host  Path  Backends
----  ----  --------
*     *     web:8080 (10.8.2.6:8080)
Annotations:
target-proxy:     k8s-tp-default-basic-ingress--f5636f071d87exxx
url-map:          k8s-um-default-basic-ingress--f5636f071d87exxx
backends:         {"k8s-be-31544--f5636f071d87exxx":"HEALTHY"}
forwarding-rule:  k8s-fw-default-basic-ingress--f5636f071d87exxx
Events:
Type    Reason   Age                From                     Message
----    ------   ----               ----                     -------
Normal  Service  7m (x376 over 2d)  loadbalancer-controller  default backend set to web:31544

答案 3 :(得分:0)

如果它是在更改集群的可伸缩性设置之后开始发生的:

删除并重新创建 Ingress 资源可能会有所帮助-就我而言,它几乎可以立即对其进行修复。

我遵循的步骤:

  1. kubectl delete ingress <faulty_ingress>
  2. kubectl apply -f <my_ingress.yaml>

答案 4 :(得分:0)

对我有用的是删除重新创建BackendConfig