5

我正在使用 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

pod 将永远处于此未就绪状态,但是,如果我将其杀死并重新启动它,它将运行良好(但有时我必须重复此操作几次)。pod 运行后,一切正常。

如果由于某种原因,pod 死掉了,它会被 Kubernetes 重新启动,但可以再次进入这个 Not Ready 状态。跑步:

kubectl describe pod java-site2-crctv

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

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

pod 无法挂载卷。但是,如果我在所有节点的本地文件夹中手动安装卷(rdb 块),问题就消失了(pod 启动时没有问题)。

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

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

4

1 回答 1

5

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

keyring: "ceph.client.admin.keyring" 

在我生成了 Ceph 密码并将 yaml 文件更改为使用后secretRef

secretRef:
  name: "ceph-secret"

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

于 2015-11-16T02:50:11.733 回答