0

我正在为我的 kuberenetes 部署配置就绪和活跃度探针。

这是我添加它的方式:

  ports:
    - name: http
      containerPort:  {{ .Values.service.internalPort }}
      protocol: TCP
  livenessProbe:
    tcpSocket:
      port: http
  readinessProbe:
    tcpSocket:
      port: http

但这会导致 pod 中的错误日志:

2021/03/24 03:23:06 http: TLS handshake error from 10.244.0.1:48476: EOF

如果我删除探针并创建部署,则不会出现此日志。

我有一个入口设置,使得对该容器的所有 http 请求都作为 https。因为我的容器只需要对它的 https 请求。

我认为显示此错误日志是因为 tcp 探测器未在此处发送 https 请求。

有没有其他方法可以在没有这些错误日志的情况下设置探针?

4

1 回答 1

1

如果您期待向服务发送 HTTPS 请求,您必须更改scheme.

livenessProbe:
  httpGet:
    path: /
    port: 443
    scheme: HTTPS
readinessProbe:
  httpGet:
    path: /
    port: 443
    scheme: HTTPS

您可以在以下位置查看更多信息:https ://kubernetes.io/docs/tasks/configure-pod-container/configure-liveness-readiness-startup-probes/#http-probes

方案:用于连接到主机的方案(HTTP 或 HTTPS)。默认为 HTTP。

如果设置了 HTTPS,kubelet将发送到 HTTPS 请求,否则默认为 HTTP。

如果请求失败,您将看到如下日志:400 bad request

10.165.18.52 - - [24/March/2021:17:06:40 +0000] "GET / HTTP/1.1" 400 271 "-" "kube-probe/1.16"

对于成功的请求,它将是200请求

10.165.18.52 - - [24/March/2021:18:10:06 +0000] "GET / HTTP/1.1" 200 "-" "kube-probe/1.16"
于 2021-03-24T03:55:54.523 回答