【问题标题】:Pod in Kubernetes always in pending stateKubernetes 中的 Pod 始终处于挂起状态
【发布时间】:2016-04-02 19:25:39
【问题描述】:

我对在 CloudStack 中的 CentOS 虚拟机中运行的 Kubernetes 有疑问。我的 pod 仍处于待处理状态。 打印 pod 的日志时收到以下错误消息:

    [root@kubernetes-master ~]# kubectl logs wildfly-rc-6a0fr
    Error from server: Internal error occurred: Pod "wildfly-rc-6a0fr" in namespace "default" : pod is not in 'Running', 'Succeeded' or 'Failed' state - State: "Pending"

如果我在 pod 上启动 describe 命令,结果如下:

[root@kubernetes-master ~]# kubectl describe pod wildfly-rc-6a0fr
Name:               wildfly-rc-6a0fr
Namespace:          default
Image(s):           jboss/wildfly
Node:               kubernetes-minion1/
Start Time:         Sun, 03 Apr 2016 15:00:20 +0200
Labels:             name=wildfly
Status:             Pending
Reason:             
Message:            
IP:             
Replication Controllers:    wildfly-rc (2/2 replicas created)
Containers:
  wildfly-rc-pod:
    Container ID:   
    Image:      jboss/wildfly
    Image ID:       
    QoS Tier:
      cpu:      BestEffort
      memory:       BestEffort
    State:      Waiting
    Ready:      False
    Restart Count:  0
    Environment Variables:
Volumes:
  default-token-0dci1:
    Type:   Secret (a secret that should populate this volume)
    SecretName: default-token-0dci1
Events:
  FirstSeen LastSeen    Count   From                SubobjectPath               Reason  Message
  ───────── ────────    ─────   ────                ─────────────               ──────  ───────
  8m        8m      1   {kubelet kubernetes-minion1}    implicitly required container POD   Pulled  Container image "registry.access.redhat.com/rhel7/pod-infrastructure:latest" already present on machine
  8m        8m      1   {kubelet kubernetes-minion1}    implicitly required container POD   Created Created with docker id 97c1a3ea4aa5
  8m        8m      1   {kubelet kubernetes-minion1}    implicitly required container POD   Started Started with docker id 97c1a3ea4aa5
  8m        8m      1   {kubelet kubernetes-minion1}    spec.containers{wildfly-rc-pod}     Pulling pulling image "jboss/wildfly"

我在下面打印的 Kubelet 有一些错误。这可能是因为 vm 只有 5GB 的存储空间吗?

systemctl status -l kubelet
● kubelet.service - Kubernetes Kubelet Server
   Loaded: loaded (/usr/lib/systemd/system/kubelet.service; enabled; vendor preset: disabled)
   Active: active (running) since lun 2016-04-04 08:08:59 CEST; 9min ago
     Docs: https://github.com/GoogleCloudPlatform/kubernetes
 Main PID: 2112 (kubelet)
   Memory: 39.3M
   CGroup: /system.slice/kubelet.service
           └─2112 /usr/bin/kubelet --logtostderr=true --v=0 --api-servers=http://kubernetes-master:8080 --address=0.0.0.0 --allow-privileged=false --pod-infra-container-image=registry.access.redhat.com/rhel7/pod-infrastructure:latest

apr 04 08:13:33 kubernetes-minion1 kubelet[2112]: W0404 08:13:33.877859    2112 kubelet.go:1690] Orphaned volume "167d0ead-fa29-11e5-bddc-064278000020/default-token-0dci1" found, tearing down volume
apr 04 08:13:53 kubernetes-minion1 kubelet[2112]: W0404 08:13:53.887279    2112 kubelet.go:1690] Orphaned volume "9f772358-fa2b-11e5-bddc-064278000020/default-token-0dci1" found, tearing down volume
apr 04 08:14:35 kubernetes-minion1 kubelet[2112]: I0404 08:14:35.341994    2112 provider.go:91] Refreshing cache for provider: *credentialprovider.defaultDockerConfigProvider
apr 04 08:14:35 kubernetes-minion1 kubelet[2112]: E0404 08:14:35.397168    2112 manager.go:1867] Failed to create pod infra container: impossible: cannot find the mounted volumes for pod "wildfly-rc-oroab_default"; Skipping pod "wildfly-rc-oroab_default"
apr 04 08:14:35 kubernetes-minion1 kubelet[2112]: E0404 08:14:35.401583    2112 pod_workers.go:113] Error syncing pod 167d0ead-fa29-11e5-bddc-064278000020, skipping: impossible: cannot find the mounted volumes for pod "wildfly-rc-oroab_default"
apr 04 08:14:58 kubernetes-minion1 kubelet[2112]: E0404 08:14:58.076530    2112 manager.go:1867] Failed to create pod infra container: impossible: cannot find the mounted volumes for pod "wildfly-rc-1aimv_default"; Skipping pod "wildfly-rc-1aimv_default"
apr 04 08:14:58 kubernetes-minion1 kubelet[2112]: E0404 08:14:58.078292    2112 pod_workers.go:113] Error syncing pod 9f772358-fa2b-11e5-bddc-064278000020, skipping: impossible: cannot find the mounted volumes for pod "wildfly-rc-1aimv_default"
apr 04 08:15:23 kubernetes-minion1 kubelet[2112]: W0404 08:15:23.879138    2112 kubelet.go:1690] Orphaned volume "56257e55-fa2c-11e5-bddc-064278000020/default-token-0dci1" found, tearing down volume
apr 04 08:15:28 kubernetes-minion1 kubelet[2112]: E0404 08:15:28.574574    2112 manager.go:1867] Failed to create pod infra container: impossible: cannot find the mounted volumes for pod "wildfly-rc-43b0f_default"; Skipping pod "wildfly-rc-43b0f_default"
apr 04 08:15:28 kubernetes-minion1 kubelet[2112]: E0404 08:15:28.581467    2112 pod_workers.go:113] Error syncing pod 56257e55-fa2c-11e5-bddc-064278000020, skipping: impossible: cannot find the mounted volumes for pod "wildfly-rc-43b0f_default"

有人可以帮我吗? 提前致谢。

【问题讨论】:

    标签: kubernetes


    【解决方案1】:

    运行以下命令以获取事件。这将显示未安排 pod 的问题(以及所有其他事件)。

    kubectl get events
    

    【讨论】:

      【解决方案2】:

      Kubernetes application troubleshooting guide 建议运行 kubectl describe pod wildfly-rc-6a0fr,这应该会显示为什么 pod 还没有移出挂起状态。

      【讨论】:

      • pod 发生的最后一个事件是 pulling image "jboss/wildfly"。之后 docker 可能会挂起(即,在各种版本的 docker 上都有报告案例)。如果您可以验证 docker pull jboss/wildfly 在节点上工作,您可以尝试杀死 kubelet(kubernetes 节点代理)以将其从请求中释放。 kubelet 应该重新启动并再次尝试拉取镜像。
      • @Yu-JuHong 感谢您的回答。我用有关 kubelet 状态的一些详细信息更新了问题。
      • 您发布的错误消息通常仅发生在 pod 对象已从 api 服务器中删除之后。如果这是真的,问题似乎仍然是图像拉动。您是否在 kubelet 日志中发现了该 pod 的任何其他错误消息?
      • Kubelet 日志在哪里?
      • 调用kubectl describe时必须提供资源类型:例如kubectl describe pod <pod-name>
      【解决方案3】:

      这主要是在 pod 无法连接到主服务器时出现。当我们设置 EKS 集群时,这是一个很常见的错误。人们只是启用公共端点访问并面临这个问题。需要涵盖的几个重要方面:

      1. 启用私有端点访问。这样 VPC 下的 worker 节点或者 pod 就可以连接了

      2. 在集群设置时设置安全组并映射到 EKS 集群。确保 pod n 工作人员安全组应添加到具有 443 端口访问权限的入口规则中。

      【讨论】:

        【解决方案4】:

        对我来说,kubectl get eventskubectl describe 都没有提供足够的信息,有用的是kubectl logs pod_name(可选-n namespace_name

        【讨论】:

          【解决方案5】:

          我遇到了同样的问题。我有两个作为控制器的微实例和用于计算的 gpu 实例。我发现有一些 dns pod 处于挂起状态,所以我扩大了控制器节点池,并且 pod 开始工作。

          【讨论】:

            【解决方案6】:

            这可能是由于资源问题。尝试增加实例的容量。

            【讨论】:

              猜你喜欢
              • 1970-01-01
              • 2021-09-15
              • 2018-02-28
              • 1970-01-01
              • 2021-03-09
              • 1970-01-01
              • 2018-10-09
              • 1970-01-01
              • 2020-03-01
              相关资源
              最近更新 更多