我正在使用VM(主)和3个裸机服务器(都运行Ubuntu 14.04) Build 一个小型Kubernetes集群 . 我跟着Kubernetes install tutorial for Ubuntu . 每个裸机服务器还有使用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重新启动,但可以再次进入此未就绪状态 . 运行:
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
吊舱无法安装音量 . 但是,如果我手动将卷(rdb块)挂载到所有节点的本地文件夹中,问题就会消失(pods启动没有问题) .
在我看来,Kubernetes无法映射它们( sudo rbd map java-site-vol
),只能挂载它们( sudo mount /dev/rbd/rbd/java-site-vol /...
) .
我应该映射我使用的所有Ceph卷还是Kubernetes应该这样做?
1 回答
我终于解决了这个问题 . 在描述复制控制器的yaml文件中,我在卷部分中使用了
keyring:
:在我generated a Ceph secret之后,将yaml文件更改为使用
secretRef
:Kubernetes能够映射和安装Ceph卷,并且pod开始正常启动 . 我不知道为什么在这种情况下使用
keyring:
不起作用 .