【问题标题】:Pods hang in pending state indefinitelyPod 无限期地挂在挂起状态
【发布时间】:2015-12-15 02:14:01
【问题描述】:

过去几周我一直在使用 6 节点集群,没有出现任何问题。今天早些时候,我们遇到了一个打开文件问题 (https://github.com/kubernetes/kubernetes/pull/12443/files),我修补并重新启动了 kube-proxy。

从那时起,所有 rc 部署到 ALL BUT node-01 的 pod 都卡在挂起状态,并记录了说明原因的消息。

查看节点上的 docker 守护进程,pod 中的容器实际上正在运行,删除 rc 会将它们删除。根据 kubelet 和 kube-apiserver 的状态,这似乎是某种回调问题。

集群正在运行 v1.0.3

这是一个状态示例

docker run --rm -it lachie83/kubectl:prod get pods --namespace=kube-system -o wide
NAME                READY     STATUS    RESTARTS   AGE       NODE
kube-dns-v8-i0yac   0/4       Pending   0          4s        10.1.1.35
kube-dns-v8-jti2e   0/4       Pending   0          4s        10.1.1.34

获取事件

Wed, 16 Sep 2015 06:25:42 +0000   Wed, 16 Sep 2015 06:25:42 +0000   1         kube-dns-v8                       ReplicationController                                                successfulCreate   {replication-controller }   Created pod: kube-dns-v8-i0yac
Wed, 16 Sep 2015 06:25:42 +0000   Wed, 16 Sep 2015 06:25:42 +0000   1         kube-dns-v8-i0yac                 Pod                                                                  scheduled          {scheduler }                Successfully assigned kube-dns-v8-i0yac to 10.1.1.35
Wed, 16 Sep 2015 06:25:42 +0000   Wed, 16 Sep 2015 06:25:42 +0000   1         kube-dns-v8-jti2e                 Pod                                                                  scheduled          {scheduler }                Successfully assigned kube-dns-v8-jti2e to 10.1.1.34
Wed, 16 Sep 2015 06:25:42 +0000   Wed, 16 Sep 2015 06:25:42 +0000   1         kube-dns-v8                       ReplicationController                                                successfulCreate   {replication-controller }   Created pod: kube-dns-v8-jti2e

调度器日志

I0916 06:25:42.897814   10076 event.go:203] Event(api.ObjectReference{Kind:"Pod", Namespace:"kube-system", Name:"kube-dns-v8-jti2e", UID:"c1cafebe-5c3b-11e5-b3c4-020443b6797d", APIVersion:"v1", ResourceVersion:"670117", FieldPath:""}): reason: 'scheduled' Successfully assigned kube-dns-v8-jti2e to 10.1.1.34
I0916 06:25:42.904195   10076 event.go:203] Event(api.ObjectReference{Kind:"Pod", Namespace:"kube-system", Name:"kube-dns-v8-i0yac", UID:"c1cafc69-5c3b-11e5-b3c4-020443b6797d", APIVersion:"v1", ResourceVersion:"670118", FieldPath:""}): reason: 'scheduled' Successfully assigned kube-dns-v8-i0yac to 10.1.1.35

在创建 pod 期间跟踪 kubelet 日志文件

tail -f kubelet.kube-node-03.root.log.INFO.20150916-060744.10668
I0916 06:25:04.448916   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:25:24.449253   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:25:44.449522   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:26:04.449774   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:26:24.450400   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:26:44.450995   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:27:04.451501   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:27:24.451910   10668 config.go:253] Setting pods for source file : {[] 0 file}
I0916 06:27:44.452511   10668 config.go:253] Setting pods for source file : {[] 0 file}

kubelet 进程

root@kube-node-03:/var/log/kubernetes# ps -ef | grep kubelet
root     10668     1  1 06:07 ?        00:00:13 /opt/bin/kubelet --address=10.1.1.34 --port=10250 --hostname_override=10.1.1.34 --api_servers=https://kube-master-01.sj.lithium.com:6443 --logtostderr=false --log_dir=/var/log/kubernetes --cluster_dns=10.1.2.53 --config=/etc/kubelet/conf --cluster_domain=prod-kube-sjc1-1.internal --v=4 --tls-cert-file=/etc/kubelet/certs/kubelet.pem --tls-private-key-file=/etc/kubelet/certs/kubelet-key.pem

节点列表

docker run --rm -it lachie83/kubectl:prod get nodes
NAME            LABELS                                             STATUS
10.1.1.30   kubernetes.io/hostname=10.1.1.30,name=node-1   Ready
10.1.1.32   kubernetes.io/hostname=10.1.1.32,name=node-2   Ready
10.1.1.34   kubernetes.io/hostname=10.1.1.34,name=node-3   Ready
10.1.1.35   kubernetes.io/hostname=10.1.1.35,name=node-4   Ready
10.1.1.42   kubernetes.io/hostname=10.1.1.42,name=node-5   Ready
10.1.1.43   kubernetes.io/hostname=10.1.1.43,name=node-6   Ready

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    问题原来是节点和主节点之间的 MTU 问题。解决后问题就解决了。

    【讨论】:

    • 我们也有类似的问题。您能否提供有关此问题的更多详细信息以及如何解决?
    【解决方案2】:

    看起来您是从头开始构建集群的。您是否已经对您的集群进行了一致性测试?如果没有,请运行它,详细信息可以在以下位置找到:

    https://github.com/kubernetes/kubernetes/blob/e8009e828c864a46bf2e1d5c7dab8ef413c8bbe5/hack/conformance-test.sh

    一致性测试应该失败,或者至少向我们提供有关您的集群设置的更多信息。请将测试结果张贴在某处,以便我们进一步诊断您的问题。

    问题很可能是您的 kubelet 和您的 kube-apiserver 在此处的节点名称上不一致。而且我还注意到您也在使用 hostname_override 。

    【讨论】:

      猜你喜欢
      • 2017-04-07
      • 1970-01-01
      • 1970-01-01
      • 2017-06-29
      • 2011-05-07
      • 2021-04-23
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多