问题描述
我正在 kubernetes 上部署一些 Web 应用程序,我想为此应用程序设置活动探测。 当我使用 liveness probe 配置我的部署时,kubelet 会开始健康检查。我使用方案“HTTP”参数定义了 httpGet,但 kubelet 随机使用了 https 模式。
这是我的活性探针配置:
livenessProbe:
failureThreshold: 4
httpGet:
path: /
port: 80
scheme: HTTP
initialDelaySeconds: 40
periodSeconds: 5
successthreshold: 1
timeoutSeconds: 2
这是 kubelet 的结果:
kubectl 描述 pod greenlight-7877dc58b7-6s78l
输出:
警告不健康的 31 秒(x4 超过 46 秒)kubelet Liveness 探测失败:获取“https://10.244.4.182/”:拨打 tcp 10.244.4.182:443: 连接:连接被拒绝
Kubernetes 版本:v1.19.9
感谢帮助!
解决方法
由于您明确声明 livenessProbe 使用 HTTP,因此可能是您的应用程序将流量重定向到 HTTPS。确保您的应用程序在基本路径 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