无法通过kubernetes准备探测访问容器

时间:2017-08-22 09:19:07

标签: 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)

容器日志(nginx)具有以下内容:

10.24.1.1 - - [22/Aug/2017:11:09:51 +0000] "GET / HTTP/1.1" 499 0 "-" "Go-http-client/1.1"

但是,如果我通过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

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

准备探测失败的原因可能是什么?

如果我在配置中删除了准备就绪探测器:

      readinessProbe:
        httpGet:
          path: /
          port: 80
        initialDelaySeconds: 5 
        periodSeconds: 5

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

1 个答案:

答案 0 :(得分:3)

ARGHUGIHIRHHHHHH。

至少一天我一直在盯着这个错误,出于某种原因,我不理解它。

基本上错误net/http: request canceled (Client.Timeout exceeded while awaiting headers)表示容器比超时时间(默认值为1秒)花费的时间更长。