GCP - GKE:每个 Ingress 配置都会自动重置。如何设置 HTTPS 健康检查?

GCP - GKE:每个 Ingress 配置都会自动重置。如何设置 HTTPS 健康检查?

我知道 Ingress 需要处于健康状态的服务才能通过 HTTP(S) 提供其内容,为此我在工作负载部署上配置了 ReadinessProbe:

        readinessProbe:
          failureThreshold: 10
          httpGet:
            path: /api/healthz
            port: 4400
            scheme: HTTPS
          periodSeconds: 30
          successThreshold: 1
          timeoutSeconds: 20

本质上,我有一个在端口上处理 HTTPS 请求的 Web 服务器4400,并且我配置了一个healthz资源以返回 HTTP 200 响应。我的 Web 服务器正在监听端口上的传入连接:

  • HTTP -> 4300
  • HTTPS-> 4400

现在,为了访问这些端口,我有一个myService针对 Web 服务器的 GKE 服务(),特别是:

  ports:
  - name: port-1
    nodePort: 31277
    port: 80
    protocol: TCP
    targetPort: 4300
  - name: port-2
    nodePort: 32167
    port: 443
    protocol: TCP
    targetPort: 4400

myIngress现在,如果我创建一个与 GCP 相关的新 Ingress 服务( ) myService,则会返回以下 Kubernetes 配置:

spec:
  backend:
    serviceName: my-service
    servicePort: port-2
  rules:
 - host: test-domain-name-here.net
    http:
      paths:
      - backend:
          serviceName: my-service
          servicePort: port-2
  tls:
 - secretName: letsencrypt-custom-cert

正如您在此处看到的,它的目标是 servicePort port-2

在此处输入图片描述

GKE 为此入口配置创建了(自动)一个名为 的新后端服务k8s-be-32167--XXXX,该服务的目标是port-2 32167,最重要的是默认的 kubernetes L7 负载均衡健康检查应该监测健康状况——准备- 服务。

32167问题是这个健康检查应该使用 HTTPS 而不是 HTTP 来测试端口,并且每当我尝试设置 HTTPS 的健康检查时,几分钟后 GCP 就会将一切重置为默认设置,这真是太烦人了!!!

答案1

目前目标池仅允许 HTTP 健康检查,并且是传统方式,您可以查看此内容文档显示允许的健康检查概念和协议。

另外,我发现了问题追踪器您可以在此处跟进并发表评论,以了解何时允许/支持 HTTPS 进行健康检查。

相关内容