Kubernetes 活性探测 httpGet 架构无法正常工作

Kubernetes liveness probe httpGet schema not working correctly

我正在 kubernetes 上部署一些 web 应用程序,我想为此应用程序设置 liveness probe。 当我使用 liveness probe 配置我的部署时,kubelet 开始运行状况检查。我被定义为带有方案“HTTP”参数的 httpGet,但 kubelet 随机使用 https 架构。

这是我的 liveness probe 配置:

livenessProbe:
  failureThreshold: 4
  httpGet:
    path: /
    port: 80
    scheme: HTTP
  initialDelaySeconds: 40
  periodSeconds: 5
  successThreshold: 1
  timeoutSeconds: 2

这是 kubelet 的结果:

kubectl 描述 pod greenlight-7877dc58b7-6s78l

输出:

Warning Unhealthy 31s (x4 over 46s) kubelet Liveness probe failed: Get "https://10.244.4.182/": dial tcp 10.244.4.182:443: connect: connection refused

Kubernetes 版本:v1.19.9

感谢您的帮助!

由于您明确声明 livenessProbe 使用 HTTP,因此很可能是您的应用程序将流量重定向到 HTTPS。确保您的应用程序 returns 是基本路径 / 上的 200 OK,而不是重定向(任何 3xx 代码)。

您可以解决这个问题,或者使用 TCP probe

apiVersion: v1
kind: Pod
metadata:
  name: goproxy
  labels:
    app: goproxy
spec:
  containers:
  - name: goproxy
    image: k8s.gcr.io/goproxy:0.1
    ports:
    - containerPort: 8080
    readinessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 5
      periodSeconds: 10
    livenessProbe:
      tcpSocket:
        port: 8080
      initialDelaySeconds: 15
      periodSeconds: 20