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

谷歌云kubernetes负载均衡器,后端的健康检查不起作用

宰父阳焱
2023-03-14

我正在将包含divolte的库伯内特斯集群从一个GCP(Google Cloud Platform)项目复制到另一个项目。我在已经运行的项目中的配置与目标项目完全相同。在我的新项目中,我没有通过正确的健康检查运行负载均衡器,当我尝试从负载均衡器连接到te静态IP时,我收到502服务器错误。

我遵循了与原始项目相同的步骤:

  1. 在GCP上创建群集

部署文件:

apiVersion: extensions/v1beta1
kind: Deployment
metadata:
  name: divolte
spec:
  selector:
    matchLabels:
      app: divolte
  replicas: 2
  strategy:
    rollingUpdate:
      maxSurge: 0
      maxUnavailable: 1
    type: RollingUpdate
  template:
    metadata:
      labels:
        app: divolte
    spec:
      containers:
      - name: divolte
        imagePullPolicy: Always
        image: "eu.gcr.io/project-name/divolte-collector:latest"
        ports:
        - containerPort: 8290
        env:
        - name: JAVA_OPTS
          value: "-Xms512m -Xmx2048m -XX:+UseG1GC -Djava.awt.headless=true"
        resources:
          limits:
            cpu: 1
            memory: 3072Mi
          requests:
            cpu: 1
            memory: 2048Mi
        livenessProbe:
          httpGet:
            path: /divolte.js
            port: 8290
          initialDelaySeconds: 22
          timeoutSeconds: 1
        readinessProbe:
          httpGet:
            path: /ping
            port: 8290
          initialDelaySeconds: 22
          periodSeconds: 1
      terminationGracePeriodSeconds: 30

服务文件:

apiVersion: v1
kind: Service
metadata:
  name: divolte
spec:
  ports:
  - name: http
    port: 80
    targetPort: 8290
    nodePort: 30964
  selector:
    app: divolte
  type: NodePort

入口文件:

apiVersion: extensions/v1beta1
kind: Ingress
metadata:
  name: divolte
  annotations:
    kubernetes.io/ingress.global-static-ip-name: ip-name-here
spec:
  tls:
  - secretName: ssl-cert-name-here
  backend:
    serviceName: divolte
    servicePort: 80

我预计负载平衡器会像我之前的GCP项目一样拾取配置文件,并将流量正确地重新路由到集群,但我无法让我的GCP负载平衡器运行状况检查正常。你知道下一步该怎么做吗?

共有1个答案

庄元龙
2023-03-14

我已经找到了这个问题的解决办法。

感谢您的建议,我正在寻找负载均衡器中的一个症状,但它是错误的方向。

kubernetes pod被卡在“crashrunbackoff”中,因为我忘记创建一个Google Storage存储桶,它不在我的留档中设置环境,所以我忽略了它。我用“kubectl logs”命令找到了它。该应用程序现已启动并运行。

 类似资料:
  • 我试图在谷歌云上设置网络负载均衡器,但健康检查总是返回不健康的结果。 我给你我遵循的步骤 > 我创建了两个windows Server 2012 R2实例 我检查了端口80在这两个实例上是否对公众开放 我创建了转发规则,谷歌云给了我一个外部IP 我在两个服务器实例的网络环回接口中设置了外部IP 我创建了一个网络路由,用于转发两个实例上的流量(路由菜单) 我为169.254.169.254/32(网

  • Google容器引擎(kubernetes) 使用我的Web服务器应用程序(Torando/python)部署/pod kubernetes中Web服务器服务的入口-它在GCP中创建了负载均衡器 负载均衡器中的后端服务,后端是Web服务器 指向后端服务器的前端 将自定义域和子域引导到相关后端的主机和路径规则 防火墙规则设置为由入口创建 当我创建上述所有内容时,我使用正确的端口和所有内容创建了一个新

  • 我创建了一个java应用程序,并将其部署到Google云计算引擎中,然后创建了一个负载平衡器,但当我尝试使用端口443访问负载平衡器前端IP时,它会重定向到端口80

  • 根据以下官方文件,我在GKE上安装了Kubernetes入口控制器。 入口控制器运行良好。 它自动创建TCP负载平衡器、健康检查和防火墙规则。我的kubernetes群集有3个节点。有趣的是,有两次健康检查失败。它传递给入口控制器正在运行的实例。我调试了它,但没有找到任何线索。谁能帮我一下吗。

  • 我在GCP中建立了自己的Elasticsearch集群。群集已启动并运行良好。 集群包含两个客户端节点,我可以使用它们在内部访问并通过运行状况检查http://IP:9200/和

  • 我有一个ECS集群,它有多个节点(任务定义),由应用程序负载平衡器前置。在负载平衡器和容器级别(在任务定义内)配置健康检查有意义吗? 负载平衡器对每个注册的目标运行配置的健康检查,以便注销故障节点。在容器级别设置健康检查可以完成相同的事情:ECS将注销任何未通过健康检查的容器(根据您的配置)。ECS将始终实例化更多任务定义实例,以满足您所需的计数。 对我来说,如果任务定义只有一个容器,那么只在负载