Use kuberntes storageclass para fornecer dinamicamente armazenamento ceph rbd

Visão geral

1) cluster ceph: versão nautilus, o monitoramento é 192.168.39.19-21
2) ambiente de cluster kuberntes: v1.14.2
3) método de integração: storageclass fornece armazenamento dinamicamente
4) nós de cluster k8s instalaram o pacote ceph-common.

1) Etapa 1: criar um pool de bloco ceph rbd do usuário e um usuário comum no cluster ceph

ceph osd pool create ceph-demo 16 16
ceph osd pool application enable ceph-demo rbd
ceph auth get-or-create client.kubernetes mon 'profile rbd' osd 'profile rbd pool=ceph-demo' mgr 'profile rbd pool=ceph-demo'

No momento, há usuários administradores e usuários kubernetes no cluster ceph, conforme mostrado na figura:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

2) Etapa 2: criar um segredo para armazenar usuários ceph em k8s

#创建secret对象保存ceph admin用户的key
kubectl create secret generic ceph-admin --type="kubernetes.io/rbd" --from-literal=key=AQAyTvhe+Q/SKBAAP/DtVX154cxmGn7z+P6aGg== --namespace=kube-system
#创建secret对象保存ceph kubernetes用户的key
kubectl create secret generic ceph-kubernetes --type="kubernetes.io/rbd" --from-literal=key=AQCR+vpeAt2NIRAAAdaRw6c3LHBWMiS/ws5okw== --namespace=kube-system

3) Etapa 3: implantar o plug-in csi no k8s

git clone https://github.com/kubernetes-incubator/external-storage.git
cd external-storage/ceph/rbd/deploy
export NAMESPACE=kube-system
sed -r -i "s/namespace: [^ ]+/namespace: $NAMESPACE/g" ./rbac/clusterrolebinding.yaml ./rbac/rolebinding.yaml
kubectl -n $NAMESPACE apply -f ./rbac

O plug-in csi foi implantado com sucesso, conforme mostrado na figura:
Insira a descrição da imagem aqui

4) Etapa 4: Crie uma classe de armazenamento em k8s

[root@master deploy]# cat storageclass-ceph-rbd.yaml
kind: StorageClass
apiVersion: storage.k8s.io/v1
metadata:
  name: ceph-rbd
provisioner: ceph.com/rbd
parameters:
  monitors: 192.168.39.19:6789,192.168.39.20:6789,192.168.39.21:6789
  adminId: admin
  adminSecretName: ceph-admin
  adminSecretNamespace: kube-system
  #userId字段会变成插件创建的pv的spec.rbd.user字段
  userId: kubernetes
  userSecretName: ceph-kubernetes
  userSecretNamespace: kube-system
  pool: ceph-demo
  fsType: xfs
  imageFormat: "2"
  imageFeatures: "layering"

Etapa 5: criar pvc com storageclass especificada em k8s

[root@master deploy]# cat ceph-rbd-pvc-test.yaml
kind: PersistentVolumeClaim
apiVersion: v1
metadata:
  name: ceph-rbd-claim
spec:
  accessModes:     
  - ReadWriteOnce
  storageClassName: ceph-rbd
  resources:
    requests:
      storage: 32Mi

Verifique as informações detalhadas de pvc e pv neste momento, conforme mostrado na figura:
Insira a descrição da imagem aqui
Insira a descrição da imagem aqui

6) Etapa 6: crie um pod de pvc especificado em k8s

[root@master deploy]# cat ceph-busybox-pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: ceph-rbd-busybox
spec:
  containers:
  - name: ceph-busybox
    image: busybox:1.27
    command: ["sleep", "60000"]
    volumeMounts:
    - name: ceph-vol1
      mountPath: /usr/share/busybox
      readOnly: false
  volumes:
  - name: ceph-vol1
    persistentVolumeClaim:
      claimName: ceph-rbd-claim

7) Etapa 7: Verifique a situação de montagem do pod e as informações do ceph rbd.

O pod inicia corretamente e o evento é mostrado na figura:
Insira a descrição da imagem aqui

Monte o bloco rbd no pod corretamente, entre no pod e use o comando mount para visualizar:
Insira a descrição da imagem aqui
há um bloco rbd criado pelo plug-in csi no pool ceph-demo no cluster ceph:
Insira a descrição da imagem aquiInsira a descrição da imagem aqui

Acho que você gosta

Origin blog.csdn.net/nangonghen/article/details/107066931
Recomendado
Clasificación