ubuntu Kubernetes Pod永远不会准备好

v1l68za4  于 2024-01-06  发布在  Kubernetes
关注(0)|答案(1)|浏览(123)

我正在使用一个VM(主服务器)和3个裸机服务器(都运行Ubuntu 14.04)设置一个小型Kubernetes集群。我使用Kubernetes install tutorial for Ubuntu。每个裸机服务器也有2T的磁盘空间使用Ceph 0.94.5导出。一切正常,但当我尝试启动复制控制器时,我得到以下结果(kubectl get pod):

  1. NAME READY STATUS RESTARTS AGE
  2. site2-zecnf 0/1 Image: site-img is ready, container is creating 0 12m

字符串
pod将永远处于Not Ready状态,但是,如果我杀死它并重新启动它,它将运行良好(有时我必须重复此操作几次)。一旦pod运行,一切都很好。
如果由于某种原因,pod死亡,它会被Kubernetes重新启动,但可以再次进入未就绪状态。运行:

  1. kubectl describe pod java-site2-crctv


我得到(删除一些字段):

  1. Namespace: default
  2. Status: Pending
  3. Replication Controllers: java-site2 (1/1 replicas created)
  4. Containers:
  5. java-site:
  6. Image: javasite-img
  7. State: Waiting
  8. Reason: Image: javasite-img is ready, container is creating
  9. Ready: False
  10. Restart Count: 0
  11. Conditions:
  12. Type Status
  13. Ready False
  14. Events:
  15. FirstSeen LastSeen Count From SubobjectPath Reason Message
  16. Sat, 14 Nov 2015 12:37:56 -0200 Sat, 14 Nov 2015 12:37:56 -0200 1 {scheduler } scheduled Successfully assigned java-site2-crctv to 10.70.2.3
  17. Sat, 14 Nov 2015 12:37:57 -0200 Sat, 14 Nov 2015 12:45:29 -0200 46 {kubelet 10.70.2.3} failedMount Unable to mount volumes for pod "java-site2-crctv_default": exit status 22
  18. Sat, 14 Nov 2015 12:37:57 -0200 Sat, 14 Nov 2015 12:45:29 -0200 46 {kubelet 10.70.2.3} failedSync Error syncing pod, skipping: exit status 22


pod无法挂载卷。但是,如果我在所有节点的本地文件夹中手动挂载卷(rdb块),问题就消失了(pod启动时没有问题)。
在我看来,Kubernetes无法Map它们(sudo rbd map java-site-vol),只能挂载它们(sudo mount /dev/rbd/rbd/java-site-vol /...)。
我应该Map我使用的所有Ceph卷,还是Kubernetes应该这样做?

ghg1uchk

ghg1uchk1#

我终于解决了这个问题。在描述复制控制器的yaml文件中,我在卷部分使用了keyring:

  1. keyring: "ceph.client.admin.keyring"

字符串
在我generated a Ceph secret并将yaml文件更改为使用secretRef之后:

  1. secretRef:
  2. name: "ceph-secret"


Kubernetes能够Map和挂载Ceph卷,并且Pod开始正常启动。我不知道为什么在这种情况下使用keyring:不起作用。

相关问题