Warning: file_get_contents(/data/phpspider/zhask/data//catemap/7/kubernetes/5.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Kubernetes CEPFS卷装载失败_Kubernetes_Ceph - Fatal编程技术网

Kubernetes CEPFS卷装载失败

Kubernetes CEPFS卷装载失败,kubernetes,ceph,Kubernetes,Ceph,我已经使用成功部署了Kubernetes群集和Ceph群集,并且能够使用以下方法手动装载CephFS设备: sudo mount-t ceph monitor1:6789://ceph-o name=admin,secretfile=/etc/ceph/cepfs.secret 我现在尝试使用kubernetes示例发射吊舱: 当我跑步时: sudo kubectl create-f cepfs.yml 我收到以下错误: 警告FailedMountVolume。卷的安装失败 “kubernete

我已经使用成功部署了Kubernetes群集和Ceph群集,并且能够使用以下方法手动装载CephFS设备:

sudo mount-t ceph monitor1:6789://ceph-o name=admin,secretfile=/etc/ceph/cepfs.secret

我现在尝试使用kubernetes示例发射吊舱:

当我跑步时:

sudo kubectl create-f cepfs.yml

我收到以下错误:

警告FailedMountVolume。卷的安装失败 “kubernetes.io/cephfs/445ee063-d1f1-11e6-a3e3-1418776a29a6-cephfs” (规范名称:“CEPFS”)吊舱“445ee063-d1f1-11e6-a3e3-1418776a29a6”(UID: “445ee063-d1f1-11e6-a3e3-1418776a29a6”)带:CEPFS:安装失败: 装载失败:fork/exec/bin/mount:装载参数无效 参数:monitor1:6789、monitor2:6789、monitor3:6789:/data /var/lib/kubelet/pods/445ee063-d1f1-11e6-a3e3-1418776a29a6/volumes/kubernetes.io~cepfs/cepfs ceph[名称=管理员,机密=机密]


kubernetes manager容器是否需要安装ceph fs common包才能成功装载?我找不到任何进一步的调试信息来确定错误的原因。

AFAIK您可能在这里遇到两个问题:

  • Ceph要求机器的ip地址才能工作
  • 运行容器的操作系统是装载存储的操作系统:需要在该机器上安装ceph工具。容器完全不知道已装入的磁盘

要在kubernetes中成功安装CephFS卷,有几个问题需要解决。请记住,我已经使用配置部署了Kubernetes 1.4.6

问题#1:Mount命令使用Kubernetes机密失败

当更仔细地检查上面的错误时,我发现Kubernetes用解释为换行符的字符加密我的Ceph密码。因此,kubelet在尝试装载文件系统时失败

为了解决这个问题,我将YAML配置为使用Ceph
secretfile
而不是Kubernetes
secret

apiVersion: v1
kind: Pod
metadata:
  name: cephfs-test
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
      # Omit for CephFS mounting error
      # secretRef:
      #   name: ceph-secret
      secretFile: "/etc/ceph/user.secret"
      readOnly: false

Full gist

所有kubernetes节点都安装了
ceph fs common
,并且工作正常,因为我可以手动装载到主机操作系统。此外,IP地址也用于实际的yaml配置中,具有相同的结果。
apiVersion: v1
kind: Pod
metadata:
  name: cephfs-test
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
      # Omit for CephFS mounting error
      # secretRef:
      #   name: ceph-secret
      secretFile: "/etc/ceph/user.secret"
      readOnly: false
docker exec $KUBELET_ID apt-get update
docker exec $KUBELET_ID apt-get install -y wget lsb-release apt-transport-https
docker exec $KUBELET_ID /bin/bash -c "wget -q -O- 'https://download.ceph.com/keys/release.asc' | apt-key add -"
RELEASE=$(docker exec $KUBELET_ID lsb_release -sc)
docker exec $KUBELET_ID /bin/bash -c "echo deb https://download.ceph.com/debian-jewel/ $RELEASE main | tee /etc/apt/sources.list.d/ceph.list"
docker exec $KUBELET_ID apt-get update
docker exec $KUBELET_ID apt-get install -y ceph-fs-common ceph-common

docker exec $KUBELET_ID mkdir -p /etc/ceph
docker exec $KUBELET_ID /bin/bash -c "echo $CEPH_SECRET > /etc/ceph/admin.secret"