当前位置: 首页 > 知识库问答 >
问题:

带有入口的BackendConfig提供了不健康的后端

金嘉言
2023-03-14

我正在学习如何使用入口来公开我的应用程序GKE v1.19。我按照GKE docs for Service、Ingress和BackendConfig的教程进行了以下设置。然而,一段时间后,我的后端服务仍然变得不健康。我的目标是覆盖入口控制器的默认“/”健康检查路径。

我在部署中定义了相同的运行状况检查。livenessProbe和readinessProbe下的yaml文件,它们似乎工作正常,因为Pod进入了运行阶段。我还尝试卷曲endpoint,它返回200状态。

我不知道为什么我的服务被标记为不健康,尽管它们可以从我直接定义的NodePort服务访问。如有任何建议或帮助,将不胜感激。非常感谢。

我将在下面添加我的yaml文件:

部署。亚马尔

....
      livenessProbe:
          httpGet:
            path: /api
            port: 3100
          initialDelaySeconds: 180
      readinessProbe:
          httpGet:
            path: /api
            port: 3100
          initialDelaySeconds: 180
.....

backendconfig.yaml

apiVersion: cloud.google.com/v1beta1
kind: BackendConfig
metadata:
  name: backend-config
  namespace: ns1
spec:
  healthCheck:
    checkIntervalSec: 30
    port: 3100
    type: HTTP #case-sensitive
    requestPath: /api

service.yaml

apiVersion: v1
kind: Service
metadata:
  annotations:
    cloud.google.com/backend-config: '{"default": "backend-config"}'
  name: service-ns1
  namespace: ns1
  labels:
    app: service-ns1
spec:
  type: NodePort
  ports:
  - protocol: TCP
    port: 3100
    targetPort: 3100
  selector:
    app: service-ns1

进入。亚马尔

apiVersion: networking.k8s.io/v1beta1
kind: Ingress
metadata:
  name: ns1-ingress
  namespace: ns1
  annotations:
    kubernetes.io/ingress.global-static-ip-name: ns1-ip
    networking.gke.io/managed-certificates: ns1-cert
    kubernetes.io/ingress.allow-http: "false" 
spec:
  rules:
  - http:
      paths:
      - path: /api/*
        backend:
          serviceName: service-ns1
          servicePort: 3100

共有1个答案

孙明德
2023-03-14

使用“BackendConfig”的理想方法是,当您的服务的服务吊舱包含多个容器时,如果您使用Anthos Ingres控制器,或者如果您需要控制用于负载平衡器健康检查的端口,那么您应该使用BackendConfig CDR来定义健康检查参数。请参阅1。

当后端服务的健康检查参数是从服务Pod的就绪探测中推断出来的时,GKE不会使就绪探测和健康检查保持同步。因此,您对就绪探测所做的任何更改都不会复制到负载均衡器上相应后端服务的健康检查中。

在您的场景中,后端在遵循路径'/'时是健康的,但在使用路径'/api'时显示不健康,因此您的入口可能存在一些错误配置。

我建议您添加注释:入口。库伯内特斯。io/重写目标:/api,因此在将请求发送到后端服务之前,spec.path中提到的路径将被重写为/api。

 类似资料:
  • 问题内容: 我遵循了负载均衡器教程:https : //cloud.google.com/container- engine/docs/tutorials/http-balancer 在使用Nginx映像时,当尝试使用自己的应用程序映像时,它工作正常后端切换为不正常。 我的应用程序重定向到/(返回302),但在pod定义中添加了一个: 我的入口看起来像: 服务配置为: 后端健康状况如下: 入口的规

  • 我遵循了负载均衡器教程:https://cloud.google.com/container-engine/docs/tutorials/http-balancer当我使用Nginx映像时工作正常,当我尝试使用我自己的应用程序映像时,尽管后端切换到不健康。 我的应用程序重定向到/(返回302),但我在pod定义中添加了一个livenessProbe: 我的入口看起来像: 服务配置为: 入口中的后端

  • 我试图通过GKE部署应用程序。到目前为止,我为应用程序的前端和后端创建了两个服务和两个部署。我使用“gce”控制器创建了一个ingress ressource,并映射了服务,如图所示 它几乎工作得很好(不是所有映射正确的根,但它工作得很好)。我在代码上添加了修改(只有应用程序的代码),我重建了图像并重新创建了服务,但入口似乎对我添加的修改和 我所有的服务都处于不健康状态 这是前台服务 当我描述时,

  • 我正在学习如何使用入口在谷歌Kubernetes引擎上公开我的应用程序。我学习了几本教程,大致了解了需要什么。然而,我不知道为什么我的服务被标记为不健康,尽管它们可以从我直接定义的NodePort服务访问。 这是我的部署文件:(我删除了一些数据,但大部分保持不变) 在阅读时,我需要一个ReadinessProbe和LivinessProbe,以便GKE在我定义的路径上运行健康检查,并且通过使用我自

  • 首先,我在https://cloud.google.com/kubernetes-engine/docs/tutorials/http-balancer测试了教程 这很好用。我还测试了相同的教程,但添加了一个tls机密来测试https,这也很好。 当我创造自己的形象时,我的问题就出现了。以下是我采取的步骤: Dockerfile: 带命令: 我读过无数关于当你的后台状态为“不健康”时该怎么办的帖子

  • 问题内容: 我只是熟悉Apache JackRabbit。我已经完成了一些用于文档管理的多用户存储库。 如果有人同时使用它们,您能回答这些问题吗? ModeShape是否以某种方式链接到JBoss?我对JBoss AS或任何其他JBoss工具没有太多经验。我看到了对tomcat的支持,但是有很多JBossy的东西 文档说将来的发行版应该具有UI集成,这还有很长的路要走吗?它将是什么样的UI集成?是