Kubernetes Pod从未准备就绪

dil*_*van 4 ubuntu ceph kubernetes

我正在使用VM(主服务器)和3台裸机服务器(均运行Ubuntu 14.04)设置一个小的Kubernetes集群。我遵循了Ubuntu的Kubernetes 安装教程。每个裸机服务器还具有使用Ceph 0.94.5导出的2T磁盘空间。一切工作正常,但是当我尝试启动复制控制器时,得到以下信息(kubectl get pods):

NAME          READY     STATUS                                         RESTARTS   AGE
site2-zecnf   0/1       Image: site-img is ready, container is creating    0      12m
Run Code Online (Sandbox Code Playgroud)

吊舱将永远处于这种“未就绪”状态,但是,如果我杀死它并再次启动它,它将运行良好(尽管有时我必须重复几次此操作)。吊舱运行后,一切正常。

如果由于某种原因Pod死了,它会被Kubernetes重新启动,但是可以再次进入此Not Ready状态。运行:

kubectl describe pod java-site2-crctv
Run Code Online (Sandbox Code Playgroud)

我得到(某些字段已删除):

Namespace:          default
Status:             Pending
Replication Controllers:    java-site2 (1/1 replicas created)
Containers:
  java-site:
    Image:      javasite-img
    State:      Waiting
      Reason:       Image: javasite-img is ready, container is creating
    Ready:      False
    Restart Count:  0
Conditions:
  Type      Status
  Ready     False 
Events:
  FirstSeen             LastSeen            Count   From            SubobjectPath   Reason      Message
  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
  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
  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
Run Code Online (Sandbox Code Playgroud)

吊舱无法安装该卷。但是,如果我手动将卷(rdb块)安装在所有节点的本地文件夹中,则问题就消失了(吊舱开始时没有问题)。

在我看来,Kubernetes无法映射它们(sudo rbd map java-site-vol),只能挂载它们(sudo mount /dev/rbd/rbd/java-site-vol /...)。

我应该映射我使用的所有Ceph卷还是Kubernetes都应该这样做?

dil*_*van 5

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

keyring: "ceph.client.admin.keyring" 
Run Code Online (Sandbox Code Playgroud)

生成Ceph机密并更改yaml文件以使用后secretRef

secretRef:
  name: "ceph-secret"
Run Code Online (Sandbox Code Playgroud)

Kubernetes能够映射和装载Ceph卷,并且豆荚开始正常启动。我不知道为什么keyring:在这种情况下无法使用。