无法通过 kubernetes 就绪探针访问容器

Chr*_*ski 3 kubernetes

我在kubectl describe podName以下位置看到此错误:

  9m        2s      118 kubelet, gke-wordpress-default-pool-2e82c1f4-0zpw   spec.containers{nginx}      Warning     Unhealthy       Readiness probe failed: Get http://10.24.0.27:80/: net/http: request canceled (Client.Timeout exceeded while awaiting headers)
Run Code Online (Sandbox Code Playgroud)

容器日志(nginx)如下:

10.24.1.1 - - [22/Aug/2017:11:09:51 +0000] "GET / HTTP/1.1" 499 0 "-" "Go-http-client/1.1"
Run Code Online (Sandbox Code Playgroud)

但是,如果我通过 exec 进入容器kubectl exec -it podName -c nginx sh并执行 wget,http://localhost我能够成功获得 HTTP 200 响应。以及如果我通过 SSH 连接到主机(GCP 计算实例),我能够成功获得 HTTP 200 响应。

我相信这个问题是在我用 NodePort 服务替换 LoadBalancer 服务后不久发生的。不知道是不是端口冲突?

有问题的服务: wordpress-service.yaml

apiVersion: v1
kind: Service
metadata:
  labels:
    app: wordpress
  name: wordpress
spec:
  type: NodePort
  ports:
    - port: 80
      targetPort: 80
      protocol: TCP
  selector:
    app: wordpress
Run Code Online (Sandbox Code Playgroud)

该容器是一个 Nginx 容器,在端口 80 上提供内容。

就绪探测失败的原因可能是什么?


如果我在我的配置中删除就绪探针:

      readinessProbe:
        httpGet:
          path: /
          port: 80
        initialDelaySeconds: 5 
        periodSeconds: 5
Run Code Online (Sandbox Code Playgroud)

一切正常,Pod 可以通过 LoadBalancer 服务访问。

Chr*_*ski 6

ARGHUGIHIRHHHHHH。

我至少已经盯着这个错误一天了,但出于某种原因我没有理解它。

本质上,错误net/http: request canceled (Client.Timeout exceeded while awaiting headers)意味着容器花费的时间比超时时间长(默认为 1 秒)。