Ceph과 Kubernetes (Rook-Ceph) 통합
1️⃣ Rook-Ceph 개요 및 아키텍처
1. Rook-Ceph이란?
Rook-Ceph는 Kubernetes 환경에서 Ceph 스토리지 클러스터를 쉽게 관리할 수 있도록 지원하는 오픈소스 프로젝트입니다. Rook는 Ceph의 클러스터를 자동으로 배포하고, 관리할 수 있는 기능을 제공합니다. 이를 통해 Kubernetes에서 Ceph를 손쉽게 설치하고, 운영할 수 있습니다.
2. Rook-Ceph 아키텍처
Rook-Ceph 아키텍처는 여러 구성 요소로 이루어져 있습니다. 각 구성 요소가 Kubernetes의 클러스터에서 어떻게 상호작용하는지 이해하는 것이 중요합니다.
- Ceph Monitors (MON): 클러스터의 상태를 추적하고 클러스터의 일관성을 유지합니다.
- Ceph OSDs: 데이터를 저장하는 역할을 합니다.
- Ceph Managers (MGR): 클러스터의 관리 및 대시보드를 담당합니다.
- Rook Operator: Ceph 클러스터를 설치하고 관리하는 컨트롤러 역할을 합니다.
📌 💡 Rook-Ceph를 사용하면 Kubernetes 환경에서 Ceph를 손쉽게 배포하고 관리할 수 있습니다.
2️⃣ Rook-Ceph 설치 및 설정
1. Rook-Ceph 설치 준비
Rook-Ceph를 설치하기 위해서는 먼저 Kubernetes 클러스터가 준비되어 있어야 하며, Helm이 설치되어 있어야 합니다.
2. Rook-Ceph 설치 과정
# Rook 설치
kubectl create -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/crds.yaml
kubectl create -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/operator.yaml
kubectl create -f https://raw.githubusercontent.com/rook/rook/master/deploy/examples/cluster.yaml
3. 설치 후 확인
# Ceph 클러스터 상태 확인
kubectl -n rook-ceph get cephcluster
이 명령어로 클러스터가 제대로 설치되었는지 확인할 수 있습니다.
📌 💡 설치 과정에서 필요한 리소스가 자동으로 생성되며, 클러스터 상태를 모니터링할 수 있습니다.
3️⃣ Rook을 이용한 Ceph 클러스터 자동 배포
1. Rook Operator 활용
Rook Operator는 Ceph 클러스터를 Kubernetes에서 자동으로 배포하고 관리하는 역할을 합니다. 이를 통해 수동으로 설정할 필요 없이 Ceph 클러스터를 Kubernetes 환경에서 손쉽게 배포할 수 있습니다.
2. 자동 배포 설정
# Ceph 클러스터 배포 YAML 파일 예시
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
namespace: rook-ceph
spec:
cephVersion:
image: ceph/ceph:v15
storage:
useAllNodes: true
useAllDevices: true
mon:
count: 3
manager:
count: 2
이 설정은 Ceph 클러스터를 자동으로 배포하며, 배포가 완료되면 클러스터가 Kubernetes 내에서 관리됩니다.
📌 💡 Ceph 클러스터를 자동으로 배포하여 운영 효율성을 높일 수 있습니다.
4️⃣ Ceph RBD StorageClass 생성 및 사용
1. RBD StorageClass란?
RBD(RADOS Block Device)는 Ceph 클러스터에서 블록 스토리지를 제공하는 기능입니다. Kubernetes에서 RBD를 사용하려면 StorageClass
를 생성해야 합니다.
2. RBD StorageClass 생성 예시
apiVersion: storage.k8s.io/v1
kind: StorageClass
metadata:
name: rook-ceph-block
provisioner: rook.io/block
parameters:
blockPool: replicapool
fsType: ext4
이 StorageClass는 rook-ceph-block
이라는 이름으로 RBD를 사용할 수 있게 설정합니다.
3. StorageClass 사용 예시
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: pvc-1
spec:
accessModes:
- ReadWriteOnce
resources:
requests:
storage: 5Gi
storageClassName: rook-ceph-block
이 PersistentVolumeClaim(PVC)은 rook-ceph-block
StorageClass를 사용하여 RBD 스토리지를 요청합니다.
📌 💡 RBD를 사용하여 Kubernetes 내에서 블록 스토리지를 효율적으로 사용할 수 있습니다.
5️⃣ CephFS를 PVC로 마운트하는 방법
1. CephFS란?
CephFS는 Ceph의 파일 시스템 기능을 제공합니다. 이를 통해 파일 시스템 기반으로 데이터를 저장하고 Kubernetes에서 활용할 수 있습니다.
2. CephFS PVC 생성 예시
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
name: cephfs-pvc
spec:
accessModes:
- ReadWriteMany
resources:
requests:
storage: 10Gi
storageClassName: rook-cephfs
3. CephFS 마운트 예시
PVC로 요청한 CephFS를 Pod에 마운트합니다.
apiVersion: v1
kind: Pod
metadata:
name: cephfs-pod
spec:
containers:
- name: cephfs-container
image: busybox
volumeMounts:
- mountPath: /mnt/cephfs
name: cephfs-volume
volumes:
- name: cephfs-volume
persistentVolumeClaim:
claimName: cephfs-pvc
이 설정은 CephFS를 Kubernetes Pod에 마운트하여 사용할 수 있게 합니다.
📌 💡 CephFS를 PVC로 마운트하여 Kubernetes에서 파일 시스템을 활용할 수 있습니다.
6️⃣ Rook-Ceph 모니터링 및 성능 튜닝
1. 모니터링 툴 활용
Rook-Ceph 클러스터의 상태와 성능을 모니터링하기 위해 Prometheus와 Grafana를 사용할 수 있습니다.
2. Prometheus와 Grafana 설정
# Prometheus 및 Grafana 설정 파일 예시
apiVersion: v1
kind: ConfigMap
metadata:
name: rook-prometheus
data:
prometheus.yml: |
scrape_configs:
- job_name: 'rook-ceph'
static_configs:
- targets: ['rook-ceph-monitor:9100']
3. 성능 튜닝
Ceph 클러스터의 성능을 최적화하려면 여러 파라미터를 조정할 수 있습니다. 예를 들어, OSD의 I/O 성능을 개선하려면 다음과 같이 설정을 수정할 수 있습니다.
apiVersion: ceph.rook.io/v1
kind: CephCluster
metadata:
name: rook-ceph
spec:
cephVersion:
image: ceph/ceph:v15
storage:
osds:
resources:
limits:
memory: "4Gi"
cpu: "2"
📌 💡 모니터링 툴을 활용하여 클러스터의 성능을 주기적으로 점검하고, 성능 튜닝을 통해 안정성을 유지할 수 있습니다.