28.4.3. 使用现有的 Ceph 集群进行动态持久性存储
使用现有的 Ceph 集群进行动态持久性存储:
生成 client.admin base64 编码的密钥:
$ ceph auth get client.adminCeph secret 定义示例
apiVersion: v1 kind: Secret metadata: name: ceph-secret namespace: kube-system data: key: QVFBOFF2SlZheUJQRVJBQWgvS2cwT1laQUhPQno3akZwekxxdGc9PQ==1 type: kubernetes.io/rbd2 为 client.admin 创建 Ceph secret:
$ oc create -f ceph-secret.yaml secret "ceph-secret" created验证是否已创建 secret:
$ oc get secret ceph-secret NAME TYPE DATA AGE ceph-secret kubernetes.io/rbd 1 5d创建存储类:
$ oc create -f ceph-storageclass.yaml storageclass "dynamic" createdCeph 存储类示例
apiVersion: storage.k8s.io/v1beta1 kind: StorageClass metadata: name: dynamic annotations: storageclass.kubernetes.io/is-default-class: "true" provisioner: kubernetes.io/rbd parameters: monitors: 192.168.1.11:6789,192.168.1.12:6789,192.168.1.13:67891 adminId: admin2 adminSecretName: ceph-secret3 adminSecretNamespace: kube-system4 pool: kube5 userId: kube6 userSecretName: ceph-user-secret7 - 1
- 以逗号分隔的 IP 地址 Ceph 监视器列表。此值是必需的。
- 2
- 能够在池中创建镜像的 Ceph 客户端 ID。默认值为
admin。 - 3
adminId的机密名称。此值是必需的。您提供的 secret 必须具有kubernetes.io/rbd。- 4
adminSecret的命名空间。默认为default。- 5
- Ceph RBD 池。默认值为
rbd,但不推荐使用此值。 - 6
- 用于映射 Ceph RBD 镜像的 Ceph 客户端 ID。默认值与
adminId的 secret 名称相同。 - 7
- 用于映射 Ceph RBD 镜像的
userId的 Ceph secret 名称。它必须与 PVC 位于同一个命名空间中。除非在新项目中将 Ceph secret 设置为默认值,否则您必须提供此参数值。
验证存储类是否已创建:
$ oc get storageclasses NAME TYPE dynamic (default) kubernetes.io/rbd创建 PVC 对象定义:
PVC 对象定义示例
kind: PersistentVolumeClaim apiVersion: v1 metadata: name: ceph-claim-dynamic spec: accessModes:1 - ReadWriteOnce resources: requests: storage: 2Gi2 创建 PVC:
$ oc create -f ceph-pvc.yaml persistentvolumeclaim "ceph-claim-dynamic" created验证 PVC 是否已创建并绑定到预期的 PV:
$ oc get pvc NAME STATUS VOLUME CAPACITY ACCESSMODES AGE ceph-claim Bound pvc-f548d663-3cac-11e7-9937-0024e8650c7a 2Gi RWO 1m创建 pod 对象定义:
Pod 对象定义示例
apiVersion: v1 kind: Pod metadata: name: ceph-pod11 spec: containers: - name: ceph-busybox image: busybox2 command: ["sleep", "60000"] volumeMounts: - name: ceph-vol13 mountPath: /usr/share/busybox4 readOnly: false volumes: - name: ceph-vol1 persistentVolumeClaim: claimName: ceph-claim-dynamic5 创建 pod:
$ oc create -f ceph-pod1.yaml pod "ceph-pod1" created验证 pod 是否已创建:
$ oc get pod NAME READY STATUS RESTARTS AGE ceph-pod1 1/1 Running 0 2m
过一分钟后,pod 状态更改为 Running。