问题描述
我正在为我的 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 请求。
解决方法
如果您希望向服务发送 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
scheme:用于连接到主机的方案(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"