首页 文章

CephFS卷安装失败

提问于
浏览
2

我已经使用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 回答

  • 1

    为了在kubernetes中成功安装CephFS卷,需要修复几个问题 . 请记住,我已使用kube-deploy docker multinode配置部署了Kubernetes 1.4.6 .

    Issue #1: Mount command Fails using Kubernetes secrets

    当仔细检查上面的错误时,我发现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
    

    Issue #2: Kubelet Missing Ceph Packages and Configuration

    kubelets都缺少将CephFS卷挂载到容器所需的 ceph-fs-commonceph-common 包以及必要的配置文件 . 以下脚本应对kubelet主/ worker代理应用必要的更新:

    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"
    

    全部要点here

  • 0

    AFAIK你可能有2个问题:

    • Ceph需要机器的IP地址才能工作

    • 运行容器的操作系统是安装存储的操作系统:需要在该计算机上安装ceph工具 . 容器完全不知道已安装的磁盘

相关问题