Ceph Blog(https://ceph.io/en/news/blog/)를 보다가 관심 가는 글이 보여서 AI번역+약간 교정해 보았습니다.
출처: https://ceph.io/en/news/blog/2025/rook-on-mac-with-docker/
소개¶
이 문서에서는 단일 노드 Minikube 클러스터에서 실행되는 테스트 Ceph 클러스터를 설정하는 방법을 설명합니다.
Docker는 안정성과 단순성 때문에 Mac M1의 Minikube 클러스터 드라이버로 선택되었습니다. Docker를 선택함으로써 가상화의 복잡성, 방화벽 설정(bootpd)의 어려움, 그리고 x86 에뮬레이션의 비용을 피할 수 있습니다.
Docker는 ARM 네이티브 컨테이너를 직접 실행합니다. 이를 통해 성능과 호환성이 향상되고 비용이 절감되는데, 이는 Rook 및 Ceph와 같이 리소스 집약적인 시스템에서 중요한 요소입니다.
필수 조건¶
- macOS Sonoma 14가 설치된 MAC M1
- 2개 이상의 CPU
- 2GB의 여유 메모리
- 20GB의 여유 디스크 공간
- 인터넷 연결
절차¶
- 도커 설치
brew install docker brew install colima colima start
- Minikube를 설치하고 시작하세요
brew install minikube minikube start --disk-size=20g --driver docker
- 호스트 머신에 kubectl을 설치하세요
curl -LO "https://dl.k8s.io/release/v1.26.1/bin/darwin/arm64/kubectl" chmod +x kubectl sudo mv kubectl /usr/local/bin/
- M1 Mac은 ARM 기반이므로 /dev/sd* 장치나 /dev/vd* 장치를 연결할 수 없습니다. 이 경우 일반적으로 /dev/loop 장치를 사용하지만, Ceph는 /dev/loop 장치 사용을 허용하지 않습니다. 대신 네트워크 블록 장치인 /dev/nbd0을 사용합니다.
minikube ssh sudo mkdir /mnt/disks # Create an empty file of size 10GB to mount disk as ceph osd sudo dd if=/dev/zero of=/mnt/disks/mydisk.img bs=1M count=10240 sudo apt update sudo apt upgrade sudo apt-get install qemu-utils # List the nbd devices lsblk | grep nbd # If you are unable to see the nbd device, load the NBD (Network Block Device) kernel module. sudo modprobe nbd max_part=8 # To bind nbd device to the file # Note: Please check there is no necessary data in /dev/nbdx, otherwise back up that data. sudo qemu-nbd --format raw -c /dev/nbd0 /mnt/disks/mydisk.img
- lsblk를 사용하여 nbd 장치의 크기를 확인하세요.
lsblk | grep nbd0
- Rook 저장소를 호스트 머신에 복제합니다.
git clone https://github.com/rook/rook.git
- rook/deploy/examples/ 디렉토리로 이동합니다.
cd rook/deploy/examples/
- Rook 오퍼레이터를 배포합니다.
kubectl create -f crds.yaml -f common.yaml -f operator.yaml
- 계속하기 전에 rook-ceph-operator가 실행 상태인지 확인하세요.
kubectl get pods -n rook-ceph
- cluster-test.yaml에서 장치 선택에 따라 스토리지 섹션에 필요한 변경 사항을 적용합니다.
storage:
useAllNodes: false
useAllDevices: false
nodes:
- name: minikube # node name of minikube node
devices:
- name: /dev/nbd0 # device name being used
allowDeviceClassUpdate: true
allowOsdCrushWeightUpdate: false
- Ceph 클러스터를 생성합니다.
kubectl create -f cluster-test.yaml
- rook-ceph 네임스페이스에서 포드 상태를 확인하여 클러스터가 실행 중인지 확인합니다.
kubectl -n rook-ceph get pod
- rook-ceph-mon, rook-ceph-mgr 또는 rook-ceph-osd 포드가 생성되지 않은 경우 자세한 내용은 Ceph 일반 문제를 참조하세요.
- 클러스터가 정상 상태인지 확인하려면 Rook Toolbox에 연결하세요.
kubectl create -f toolbox.yaml
- 툴박스 포드가 컨테이너를 다운로드한 후 실행 상태가 될 때까지 기다리세요.
kubectl -n rook-ceph rollout status deploy/rook-ceph-tools
- rook-ceph-tools 포드가 실행되면 다음 명령을 사용하여 연결할 수 있습니다.
kubectl -n rook-ceph exec -it deploy/rook-ceph-tools -- bash
- 명령을 실행
ceph status하고 다음 사항을 확인하세요.- 모든 mon이 정족수에 도달했습니다.
- mgr가 활성화되었습니다
- 최소 1개의 OSD가 켜져 있어야 합니다.
- 상태가 HEALTH_OK가 아닌 경우 경고 또는 오류를 조사하세요.
bash-5.1$ ceph -s
cluster:
id: f89dd5e5-e2bb-44e8-8969-659f0fc9dc55
health: HEALTH_OK
services:
mon: 1 daemons, quorum a (age 7m)
mgr: a(active, since 5m)
osd: 1 osds: 1 up (since 6m), 1 in (since 6m)
data:
pools: 1 pools, 1 pgs
objects: 2 objects, 449 KiB
usage: 27 MiB used, 10 GiB / 10 GiB avail
pgs: 1 active+clean
클러스터가 정상적이지 않은 경우 Ceph의 일반적인 문제를 참조하여 잠재적인 해결책을 찾아보세요.
각주:
이 기사를 쓰는 데 필요한 모든 지원과 지침을 제공해 주신 Yuval Lifshitz에게 감사드립니다.