2017-01-03 16 views
2

Fails Я успешно развернут кластер Kubernetes с использованием docker-multinode configuration, а также кластер Ceph и я в состоянии смонтировать CephFS устройство вручную, используя следующие:CephFS Volume Mount

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

я теперь при попытке запуска стручок на примере kubernetes 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

Я получаю следующее сообщение об ошибке:

Warning FailedMount MountVolume.SetUp failed for volume "kubernetes.io/cephfs/445ee063-d1f1-11e6-a3e3-1418776a29a6-cephfs" (spec.Name: "cephfs") pod "445ee063-d1f1-11e6-a3e3-1418776a29a6" (UID: "445ee063-d1f1-11e6-a3e3-1418776a29a6") with: CephFS: mount failed: mount failed: fork/exec /bin/mount: invalid argument Mounting arguments: 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 контейнеры должны иметь СЕРН фс-общий пакет был установлен для того, чтобы выполнить успешную гору? Я не могу найти никакой дополнительной информации для отладки, чтобы определить причину ошибки.

ответ

0

Для успешного монтирования тома CephFS в кубернетах возникла пара проблем. Имейте в виду, что я развернул Kubernetes 1.4.6, используя конфигурацию kube-deploy docker multinode.

Выпуск № 1: команда монтирования, не используя Kubernetes секреты

При более внимательном изучении ошибки выше, я обнаружил, что Kubernetes шифрует свой Ceph тайну с символами, которые интерпретируются как символы новой строки. В результате кубелет не работает при попытке монтировать файловую систему.

Чтобы решить эту проблему, я настроил мой 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 

Выпуск № 2: Kubelet Missing Ceph Пакеты и конфигурации

В kubelets были все недостающие пакеты ceph-fs-common и ceph-common, необходимые для монтирования томов CephFS в контейнеры, а также необходимые файлы конфигурации. Следующий скрипт должен применяет необходимые обновления для kubelet мастера/рабочих агентов:

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

1

AFAIK вы можете иметь 2 проблемы здесь:

  • Ceph требуется IP-адреса компьютеров для работы
  • ОС вы работаете контейнер на, это тот, который монтирует хранения: СЕРН инструмента необходимо установить на эту машину. Контейнер полностью не знает о смонтированных дисках.
+0

Всех kubernetes узлов 'установленных цеф фс-common' и работают правильно, как я могу установить вручную к ОС хоста. Кроме того, IP-адреса используются в фактической конфигурации ямля с тем же результатом. – Kyle

 Смежные вопросы

  • Нет связанных вопросов^_^