我已经使用docker-multinode configuration以及Ceph集群成功部署了Kubernetes集群,并且能够使用以下方法手动安装CephFS设备:
sudo mount -t ceph monitor1:6789:/ /ceph -o name=admin,secretfile=/etc/ceph/cephfs.secret
我现在正尝试使用kubernetes示例启动一个pod here:
apiVersion: v1
kind: Secret
metadata:
name: ceph-secret
data:
key: my-ceph-secret-key
---
apiVersion: v1
kind: Pod
metadata:
name: cephfs2
spec:
containers:
- name: cephfs-rw
image: kubernetes/pause
volumeMounts:
- mountPath: "/mnt/cephfs"
name: cephfs
volumes:
- name: cephfs
cephfs:
monitors:
- "monitor1:6789"
- "monitor2:6789"
- "monitor3:6789"
user: admin
secretRef:
name: ceph-secret
readOnly: false
当我跑:
sudo kubectl create -f cephfs.yml
我收到以下错误:
警告FailedMount MountVolume.SetUp卷“kubernetes.io/cephfs/445ee063-d1f1-11e6-a3e3-1418776a29a6-cephfs”(spec.Name:“cephfs”)pod“445ee063-d1f1-11e6-a3e3-1418776a29a6”( UID:“445ee063-d1f1-11e6-a3e3-1418776a29a6”):CephFS:mount失败:mount失败:fork / exec / bin / mount:invalid参数挂载参数:monitor1:6789,monitor2:6789,monitor3:6789:/ data /var/lib/kubelet/pods/445ee063-d1f1-11e6-a3e3-1418776a29a6/volumes/kubernetes.io~cephfs/cephfs ceph [name = admin,secret = secret]
kubernetes管理器容器是否需要安装ceph-fs-common软件包才能成功安装?我找不到任何进一步的调试信息来确定错误的原因 .
2 回答
为了在kubernetes中成功安装CephFS卷,需要修复几个问题 . 请记住,我已使用kube-deploy docker multinode配置部署了Kubernetes 1.4.6 .
Issue #1: Mount command Fails using Kubernetes secrets
当仔细检查上面的错误时,我发现Kubernetes使用被解释为换行符的字符加密我的Ceph秘密 . 因此,在尝试装入文件系统时,kubelet会失败 .
为了解决方法,我将我的YAML配置为使用Ceph
secretfile
而不是Kubernetessecret
:Issue #2: Kubelet Missing Ceph Packages and Configuration
kubelets都缺少将CephFS卷挂载到容器所需的
ceph-fs-common
和ceph-common
包以及必要的配置文件 . 以下脚本应对kubelet主/ worker代理应用必要的更新:全部要点here
AFAIK你可能有2个问题:
Ceph需要机器的IP地址才能工作
运行容器的操作系统是安装存储的操作系统:需要在该计算机上安装ceph工具 . 容器完全不知道已安装的磁盘