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

不健康的入口服务

陈淳
2023-03-14

我试图通过GKE部署应用程序。到目前为止,我为应用程序的前端和后端创建了两个服务和两个部署。我使用“gce”控制器创建了一个ingress ressource,并映射了服务,如图所示

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  labels:
    app: app
    part: ingress
  name: my-irool-ingress
  annotations:
    kubernetes.io/ingress.class: "gce"
    kubernetes.io/ingress.global-static-ip-name: my-ip
spec:
 backend:
    serviceName: client-svc
    servicePort: 3000
 rules:
  - http:
        paths:
        - path: /back
          backend:
            serviceName: back-svc
            servicePort: 9000
  - http:
        paths:
        - path: /back/*
          backend:
            serviceName: back-svc
            servicePort: 9000

它几乎工作得很好(不是所有映射正确的根,但它工作得很好)。我在代码上添加了修改(只有应用程序的代码),我重建了图像并重新创建了服务,但入口似乎对我添加的修改和

我所有的服务都处于不健康状态

这是前台服务

apiVersion: v1
kind: Service
metadata:
  labels:
    app: app
    part: front
  name: client
  namespace: default
spec:
  type: NodePort
  ports:
  - nodePort: 32585
    port: 3000
    protocol: TCP
  selector:
     app: app
     part: front

当我描述时,除了我的服务不健康之外,我什么都没有得到。在创作的那一刻,我不断地

警告GCE 6m负载平衡器控制器googleapi:错误409:资源“[project/idproject]/global/healthChecks/k8s-be-32585--17c7。。。。。。01’已存在,已存在

我的问题是:

>

  • 上面显示的代码有什么错误?我是否应该将所有服务映射到端口80(默认入口端口,以便它可以工作?)

    readinessProbe和livenessProbe是什么?我应该添加它们还是将它们映射到默认后端的服务就足够了?

  • 共有1个答案

    施洛城
    2023-03-14

    对于您的第一个问题,删除并重新创建入口可能会解决问题。对于第二个问题,您可以在此处查看配置活动和准备状态探测的完整步骤。此外,正如这里定义的(作为pod的示例):

    livenessProbe:指示容器是否正在运行。如果活性探测失败,kubelet将杀死容器,容器将遵循其重新启动策略。如果容器不提供活性探测,则默认状态为Success。

    和readinessProbe:指示容器是否准备好为请求提供服务。如果就绪性探测失败,endpoint控制器将从与Pod匹配的所有服务的endpoint中删除Pod的IP地址。初始延迟前的默认准备状态为失败。如果容器不提供就绪探测,则默认状态为Success。

     类似资料:
    • 问题内容: 我遵循了负载均衡器教程: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: 我的入口看起来像: 服务配置为: 入口中的后端

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

    • 我正在学习如何使用入口来公开我的应用程序GKE v1.19。我按照GKE docs for Service、Ingress和BackendConfig的教程进行了以下设置。然而,一段时间后,我的后端服务仍然变得不健康。我的目标是覆盖入口控制器的默认“/”健康检查路径。 我在部署中定义了相同的运行状况检查。livenessProbe和readinessProbe下的yaml文件,它们似乎工作正常,因

    • 我已经在端口80上配置了一个通过apache公开的web应用程序pod。我无法配置从internet访问的服务入口。问题是后端服务总是报告为不健康。 Pod配置: 服务配置: 入口配置: 这会导致后端服务报告为不健康。 健康检查设置:

    • 因此,我们正在使用全局MTL部署istio 1.0.2,目前进展顺利。对于健康检查,我们为服务添加了单独的端口,并根据文档进行了配置: https://istio.io/docs/tasks/traffic-management/app-health-check/#mutual-tls-is-enabled 我们的应用程序端口现在位于 8080 上,运行状况检查端口位于 8081 上。完成此操作后