28.4.3. 동적 영구 스토리지에 기존 Ceph 클러스터 사용
동적 영구 스토리지에 기존 Ceph 클러스터를 사용하려면 다음을 수행합니다.
client.admin base64 인코딩 키를 생성합니다.
$ ceph auth get client.admin
Ceph 시크릿 정의 예
apiVersion: v1 kind: Secret metadata: name: ceph-secret namespace: kube-system data: key: QVFBOFF2SlZheUJQRVJBQWgvS2cwT1laQUhPQno3akZwekxxdGc9PQ== 1 type: kubernetes.io/rbd 2
client.admin의 Ceph 시크릿을 생성합니다.
$ oc create -f ceph-secret.yaml secret "ceph-secret" created
보안이 생성되었는지 확인합니다.
$ oc get secret ceph-secret NAME TYPE DATA AGE ceph-secret kubernetes.io/rbd 1 5d
스토리지 클래스를 생성합니다.
$ oc create -f ceph-storageclass.yaml storageclass "dynamic" created
Ceph 스토리지 클래스 예
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:6789 1 adminId: admin 2 adminSecretName: ceph-secret 3 adminSecretNamespace: kube-system 4 pool: kube 5 userId: kube 6 userSecretName: ceph-user-secret 7
- 1
- 쉼표로 구분된 IP 주소 Ceph 모니터 목록입니다. 이 값은 필수입니다.
- 2
- 풀에 이미지를 만들 수 있는 Ceph 클라이언트 ID입니다. 기본값은
admin
입니다. - 3
adminId
의 시크릿 이름입니다. 이 값은 필수입니다. 제공하는 시크릿에는kubernetes.io/rbd
가 있어야 합니다.- 4
adminSecret
의 네임스페이스입니다. 기본값은default
입니다.- 5
- Ceph RBD 풀. 기본값은
rbd
이지만 이 값은 권장되지 않습니다. - 6
- Ceph RBD 이미지를 매핑하는 데 사용되는 Ceph 클라이언트 ID입니다. 기본값은
adminId
의 시크릿 이름과 동일합니다. - 7
- Ceph RBD 이미지를 매핑하는
userId
의 Ceph 시크릿 이름입니다. PVC와 동일한 네임스페이스에 있어야 합니다. 새 프로젝트에서 Ceph 보안을 기본값으로 설정하는 경우 이 매개변수 값을 제공해야 합니다.
스토리지 클래스가 생성되었는지 확인합니다.
$ 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: 2Gi 2
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-pod1 1 spec: containers: - name: ceph-busybox image: busybox 2 command: ["sleep", "60000"] volumeMounts: - name: ceph-vol1 3 mountPath: /usr/share/busybox 4 readOnly: false volumes: - name: ceph-vol1 persistentVolumeClaim: claimName: ceph-claim-dynamic 5
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
1분 정도 경과하면 포드 상태가 Running
으로 변경됩니다.