更新部署后服务返回 301 的健康检查

Health checks for service returning 301 after updating deployment

我们最近更新了使用 Docker 和 Kubernetes 部署的 dropwizard 服务的部署。

它之前工作正常,就绪探测器正在对内部集群 IP 生成 200 秒的运行状况检查 ping。由于我们更新了健康检查 ping 导致 301 并且服务被认为已关闭。

我注意到健康检查现在是 NEG 的默认 kubernetes L7 负载平衡健康检查。(端口设置为 80)之前是 默认kubernetes L7 负载平衡健康检查。 其中端口是可配置的。

kube 文件是通过 CircleCI 部署的,但就绪探测是:


kind: Deployment
metadata:
  name: pes-${CIRCLE_BRANCH}
  namespace: ${GKE_NAMESPACE_NAME}
  annotations:
    reloader.stakater.com/auto: 'true'
spec:
  replicas: 2
  selector:
    matchLabels:
      app: ***
  template:
    metadata:
      labels:
        app: ***
    spec:
      containers:
        - name: ***
          image: ***
          envFrom:
            - configMapRef:
                name: ***
            - secretRef:
                name: ***
          command: ['./gradlew', 'run']
          resources: {}
          ports:
            - name: pes
              containerPort: 5000
          readinessProbe:
            httpGet:
              path: /api/healthcheck
              port: pes
            initialDelaySeconds: 15
            timeoutSeconds: 30

---
apiVersion: v1
kind: Service
metadata:
  name: ***
  namespace: ${GKE_NAMESPACE_NAME}
spec:
  ports:
    - name: pes
      port: 5000
      targetPort: pes
      protocol: TCP
  selector:
    app: ***
  type: LoadBalancer

关于这需要如何在 GCP 中配置的任何想法?

我感觉新部署已经从旧版运行状况检查更改为非旧版,但不知道还需要设置什么才能使其正常工作。 kube 文件是否处理创建防火墙规则或是否需要手动完成?

正在 https://cloud.google.com/load-balancing/docs/health-check-concepts?hl=en

阅读文档

编辑: 问题现已解决。 GKE 版本更新后,它现在默认创建 NEG 健康检查。我们通过向服务部署文件添加以下注释来禁用此功能。

元数据: 注释: cloud.google.com/neg: '{"ingress":false}'

问题现已解决。 GKE 版本更新后,它现在默认创建 NEG 健康检查。我们通过向服务部署文件添加以下注释来禁用此功能。

metadata: annotations: cloud.google.com/neg: '{"ingress":false}'