
29์ XNUMX์ผ, Kubernetes, Prometheus ๋ฐ ์ปจํ
์ด๋ ๋ฐ ํด๋ผ์ฐ๋ ๋ค์ดํฐ๋ธ ์ธ๊ณ์ ๊ธฐํ ์คํ ์์ค ์ ํ์ ์ง์ํ๋ ์กฐ์ง์ธ CNCF(Cloud Native Computing Foundation)์ ๊ธฐ์ ์์ํ๋ ํ๋ก์ ํธ ์น์ธ์ ๋ํด ์ฌ๊ธฐ๊พผ ๊ทธ๋ค์ ๋์ด์ ๋ค์ด๊ฐ๋๋ค. โKubernetes์ ๋ถ์ฐ ์คํ ๋ฆฌ์ง ์ค์ผ์คํธ๋ ์ดํฐโ์ ๋ํด ์์๋ณผ ์ ์๋ ์ ํธ์ ๊ธฐํ์
๋๋ค.
์ด๋ค ์ข ๋ฅ์ ๋ฃจํฌ?
Go๋ก ์์ฑ๋ ์ํํธ์จ์ด์ ๋๋ค( ๋ฌด๋ฃ Apache License 2.0์ ๋ฐ๋ผ), ๋ฐ์ดํฐ ์จ์ดํ์ฐ์ค์ ์๋ํ๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋๋ก ์ค๊ณ๋์์ต๋๋ค. ์๊ฐ ๊ด๋ฆฌ, ์๊ฐ ํ์ฅ, ์๊ฐ ์น์ . ์ด๋ฅผ ์ํด Rook์ ๋ฐฐํฌ, ๋ถํธ์คํธ๋ํ, ๊ตฌ์ฑ, ํ๋ก๋น์ ๋, ํ์ฅ, ์ ๋ฐ์ดํธ, ๋ง์ด๊ทธ๋ ์ด์ , ์ฌํด ๋ณต๊ตฌ, ๋ชจ๋ํฐ๋ง ๋ฐ ๋ฆฌ์์ค ๊ด๋ฆฌ๋ฅผ ์๋ํํฉ๋๋ค(Kubernetes ํ๊ฒฝ์์ ์ฌ์ฉ๋๋ ๋ฐ์ดํฐ ์ ์ฅ์์ ๊ฒฝ์ฐ).
์ด ํ๋ก์ ํธ๋ ์ํ ๋จ๊ณ์ ์์ผ๋ฉฐ Kubernetes ํด๋ฌ์คํฐ์์ Ceph ๋ถ์ฐ ์คํ ๋ฆฌ์ง ์์คํ ์ ์กฐ์ ํ๋ ๋ฐ ํนํ๋์ด ์์ต๋๋ค. ์ ์๋ ๋ํ ๋ค๋ฅธ ์คํ ๋ฆฌ์ง ์์คํ ์ ์ง์ํ ๊ณํ์ ๋ฐํํ์ง๋ง ๋ค์ ๋ฆด๋ฆฌ์ค์์๋ ์ด๋ฌํ ์ผ์ด ๋ฐ์ํ์ง ์์ ๊ฒ์ ๋๋ค.
๊ตฌ์ฑ ์์ ๋ฐ ๊ธฐ์ ์ฅ์น
Kubernetes ๋ด๋ถ์์ Rook์ ์์ ์ ํน์ ์ฐ์ฐ์๋ฅผ ๊ธฐ๋ฐ์ผ๋ก ํฉ๋๋ค. (Kubernetes Operator์ ๋ํ ์์ธํ ๋ด์ฉ์ ), ์คํ ๋ฆฌ์ง ๊ตฌ์ฑ์ ์๋ํํ๊ณ ๋ชจ๋ํฐ๋ง์ ๊ตฌํํฉ๋๋ค.
๋ฐ๋ผ์, ๋ฃจํฌ ์ด์์ ์ ์ฅ์์ ๋ฐฐํฌ ๋ฐ ํ์ ์ ์ง ๊ด๋ฆฌ์ ํ์ํ ๋ชจ๋ ๊ฒ์ ํฌํจํ๋ ์ปจํ ์ด๋์ธ ๊ฒ ๊ฐ์ต๋๋ค. ์ด์์์ ์ฑ ์์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- Ceph ์คํ ๋ฆฌ์ง ๋ฐ๋ชฌ์ฉ DaemonSet ์์ฑ () ๊ฐ๋จํ RADOS ํด๋ฌ์คํฐ๋ฅผ ์ฌ์ฉํฉ๋๋ค.
- Ceph ๋ชจ๋ํฐ๋ง์ ์ํ ํฌ๋ ์์ฑ (์์ , ํด๋ฌ์คํฐ ์ํ๋ฅผ ํ์ธํฉ๋๋ค. ์ฟผ๋ผ์ ๊ฒฝ์ฐ ๋๋ถ๋ถ์ ๊ฒฝ์ฐ 3๊ฐ์ ๋ณต์ฌ๋ณธ์ด ๋ฐฐํฌ๋๊ณ , ๊ทธ ์ค ํ๋๋ผ๋ ๋จ์ด์ง๋ฉด ์ ๋ณต์ฌ๋ณธ์ด ์ฌ๋ผ๊ฐ๋๋ค.;
- CRD ๊ด๋ฆฌ() ์์ ์ ์ํด , , (๊ฐ์ฒด์ ๋ํด PUT/GET์ ์ํํ๋ HTTP ์์ฒญ์ ์ ๊ณตํ๊ธฐ ์ํ ๋ฆฌ์์ค ๋ฐ ์๋น์ค ์ธํธ - S3 ๋ฐ Swift API์ ํธํ๋จ)๊ณผ ;
- ํ์ํ ๋ชจ๋ ์๋น์ค๋ฅผ ์คํํ๊ธฐ ์ํด ํฌ๋๋ฅผ ์ด๊ธฐํํฉ๋๋ค.
- Rook ์์ด์ ํธ ์์ฑ.
์์ด์ ํธ ์ค๋ธ ๋ฃจํฌ ๊ฐ Kubernetes ๋ ธ๋์ ๋ฐฐํฌ๋๋ ๋ณ๋์ Pod๋ก ํ์๋ฉ๋๋ค. ์์ด์ ํธ์ ๋ชฉ์ ์ ํ๋ฌ๊ทธ์ธ ๊ตฌ์ฑ์ ๋๋ค. , Kubernetes์ ์คํ ๋ฆฌ์ง ๋ณผ๋ฅจ์ ๋ํ ์ง์์ ์ ๊ณตํฉ๋๋ค. ์์ด์ ํธ๋ ๋คํธ์ํฌ ์ ์ฅ ์ฅ์น ์ฐ๊ฒฐ, ๋ณผ๋ฅจ ๋ง์ดํธ, ํ์ผ ์์คํ ํฌ๋งท ๋ฑ ์คํ ๋ฆฌ์ง ์์ ์ ๊ตฌํํฉ๋๋ค.

์ ์ฒด Kubernetes ํด๋ฌ์คํฐ ์ฒด๊ณ์์ Rook ๊ตฌ์ฑ ์์์ ์์น ๋ฐ ์ญํ
Rook์ ์ธ ๊ฐ์ง ์ ํ์ ์คํ ๋ฆฌ์ง๋ฅผ ์ ๊ณตํฉ๋๋ค.
- (๋ธ๋ก,
StorageClass) โ ์ ์ฅ์๋ฅผ ๋จ์ผ ๋๋ก์ ์ฅ์ฐฉํฉ๋๋ค. - (๋ชฉ์ ,
ObjectStore) - Kubernetes ํด๋ฌ์คํฐ ๋ด๋ถ ๋ฐ ์ธ๋ถ์์ ์ฌ์ฉํ ์ ์์ต๋๋ค(S3 API๋ฅผ ํตํด). - (๊ณต์ ํ์ผ ์์คํ
,
Filesystem)์ ์ฌ๋ฌ Pod์์ ์ฝ๊ณ ์ฐ๊ธฐ ์ํด ๋ง์ดํธํ ์ ์๋ ํ์ผ ์์คํ ์ ๋๋ค.
Rook์ ๋ด๋ถ๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค.
- ๋ชฝ์ค โ Ceph ๋ชจ๋ํฐ๋ง์ฉ ํฌ๋(์ด๋ฏธ ์ธ๊ธํ ceph-mon ํฌํจ)
- OSD - ceph-osd ๋ฐ๋ชฌ(๊ฐ์ฒด ์คํ ๋ฆฌ์ง ๋ฐ๋ชฌ)์ด ํฌํจ๋ ํฌ๋
- M.G.R. - ์ ๋ง๊ฐ ์๋ ๊ผฌํฌ๋ฆฌ ์ธ๋ถ ์์คํ (๋ชจ๋ํฐ๋ง/์ ์ด)์ ๋ํ ์ถ๊ฐ ๋ชจ๋ํฐ๋ง ๊ธฐ๋ฅ ๋ฐ ์ธํฐํ์ด์ค๋ฅผ ์ ๊ณตํ๋ (Ceph Manager)
- RGW (์ ํ ๊ณผ๋ชฉ) - ๊ฐ์ฒด ์คํ ๋ฆฌ์ง๊ฐ ํฌํจ๋ ํฌ๋
- MDS (์ ํ ๊ณผ๋ชฉ) - ๊ณต์ ํ์ผ ์์คํ ์ด ์๋ ํฌ๋.

๋ชจ๋ Rook ๋ฐ๋ชฌ(Mons, OSD, MGR, RGW, MDS)์ ๋จ์ผ ๋ฐ์ด๋๋ฆฌ(rook) ์ปจํ
์ด๋์์ ์คํ๋ฉ๋๋ค.
Rook ํ๋ก์ ํธ์ ๋ํ ๊ฐ๋ตํ ์๊ฐ๋ฅผ ์ํด ์ด ์งง์(12๊ฐ ์ฌ๋ผ์ด๋)๋ ์ ์ฉํ ์ ์์ต๋๋ค. Bassam Tabbara(Quantum Corp์ CTO)๊ฐ ์ ๊ณตํฉ๋๋ค.
๋ฃจํฌ ์ด์
Rook Operator๋ Kubernetes ๋ฒ์ 1.6 ์ด์์ ์๋ฒฝํ๊ฒ ์ง์ํฉ๋๋ค. (๊ทธ๋ฆฌ๊ณ ๋ถ๋ถ์ ์ผ๋ก ์ด์ K8s ๋ฆด๋ฆฌ์ค - 1.5.2). ๊ทธ์ ์ค์น ะฒ ๊ทธ๊ฒ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค :
cd cluster/examples/kubernetes
kubectl create -f rook-operator.yaml
kubectl create -f rook-cluster.yaml๋ํ, Rook ์คํผ๋ ์ดํฐ๋ ์ค๋น๋์ด ์์ต๋๋ค. , ๋๋ถ์ ๋ค์๊ณผ ๊ฐ์ด ์ค์น๋ฅผ ์ํํ ์ ์์ต๋๋ค.
helm repo add rook-alpha https://charts.rook.io/alpha
helm install rook-alpha/rook ์๋ ๊ฐ๋ฅ (์๋ฅผ ๋ค์ด ์ง์์ ๋นํ์ฑํํ ์ ์์ต๋๋ค. (์ด ๊ธฐ๋ฅ์ด ํด๋ฌ์คํฐ์์ ์ฌ์ฉ๋์ง ์๋ ๊ฒฝ์ฐ) helm install ๋งค๊ฐ๋ณ์๋ฅผ ํตํด --set key=value[,key=value] (๋๋ ๋ณ๋์ YAML ํ์ผ์ ์ ์ฅํ๊ณ ๋ค์์ ํตํด ์ ์ก) -f values.yaml).
Rook ์คํผ๋ ์ดํฐ๋ฅผ ์ค์นํ๊ณ ์์ด์ ํธ์ ํจ๊ป ํฌ๋๋ฅผ ์์ํ ํ ๋จ์ ๊ฒ์ Rook ํด๋ฌ์คํฐ ์์ฒด๋ฅผ ์์ฑํ๋ ๊ฒ๋ฟ์
๋๋ค. ๊ฐ์ฅ ๊ฐ๋จํ ๊ตฌ์ฑ์ ๋ค์๊ณผ ๊ฐ์ต๋๋ค(rook-cluster.yaml):
apiVersion: v1
kind: Namespace
metadata:
name: rook
---
apiVersion: rook.io/v1alpha1
kind: Cluster
metadata:
name: rook
namespace: rook
spec:
dataDirHostPath: /var/lib/rook
storage:
useAllNodes: true
useAllDevices: false
storeConfig:
storeType: bluestore
databaseSizeMB: 1024
journalSizeMB: 1024์ฃผ์: ์์ฑ์ ํน๋ณํ ์ฃผ์๋ฅผ ๊ธฐ์ธ์ฌ์ผ ํฉ๋๋ค. dataDirHostPath, ์ฌ๋ถํ
ํ ํด๋ฌ์คํฐ๋ฅผ ์ ์ฅํ๋ ค๋ฉด ์ฌ๋ฐ๋ฅธ ๊ฐ์ด ํ์ํฉ๋๋ค. Kubernetes ํธ์คํธ์์ Rook ๋ฐ์ดํฐ์ ์๊ตฌ ์ ์ฅ ์์น๋ก ์ฌ์ฉ๋๋ ๊ฒฝ์ฐ ์์ฑ์๋ ์ด ๋๋ ํฐ๋ฆฌ์ ์ต์ 5GB์ ์ฌ์ ๋์คํฌ ๊ณต๊ฐ์ ํ๋ณดํ ๊ฒ์ โโ๊ถ์ฅํฉ๋๋ค.
๋จ์ ๊ฒ์ ์ค์ ๋ก ๊ตฌ์ฑ์์ ํด๋ฌ์คํฐ๋ฅผ ์์ฑํ๊ณ ํฌ๋๊ฐ ํด๋ฌ์คํฐ(๋ค์์คํ์ด์ค)์ ์์ฑ๋์๋์ง ํ์ธํ๋ ๊ฒ์
๋๋ค. rook):
kubectl create -f rook-cluster.yaml
kubectl -n rook get pod
NAME READY STATUS RESTARTS AGE
rook-api-1511082791-7qs0m 1/1 Running 0 5m
rook-ceph-mgr0-1279756402-wc4vt 1/1 Running 0 5m
rook-ceph-mon0-jflt5 1/1 Running 0 6m
rook-ceph-mon1-wkc8p 1/1 Running 0 6m
rook-ceph-mon2-p31dj 1/1 Running 0 6m
rook-ceph-osd-0h6nb 1/1 Running 0 5m์ ๊ทธ๋ ์ด๋ Rook ํด๋ฌ์คํฐ(์ ๋ฒ์ ๊น์ง)๋ ์ด ๋จ๊ณ์์ ๋ชจ๋ ๊ตฌ์ฑ ์์๋ฅผ ํน์ ์์๋ก ์์ฐจ์ ์ผ๋ก ์ ๋ฐ์ดํธํด์ผ ํ๋ ์ ์ฐจ์ด๋ฉฐ, ํ์ฌ Rook ์ค์น๊ฐ ์์ ํ "์ ์"์ธ์ง ํ์ธํ ํ์๋ง ์์ํ ์ ์์ต๋๋ค. ์ํ. Rook ๋ฒ์ 0.5.0์ 0.5.1๋ก ์ ๋ฐ์ดํธํ๋ ์๋ฅผ ์ฌ์ฉํ ์์ธํ ๋จ๊ณ๋ณ ์ง์นจ์ ๋ค์์์ ์ฐพ์ ์ ์์ต๋๋ค. .
์ง๋ 11์ Rook ๋ธ๋ก๊ทธ์์ ๋น๊ต ๊ณต์ฐ EBS์ ํจ๊ป ๊ทธ ๊ฒฐ๊ณผ๋ ์ฃผ๋ชฉํ ๋งํ๋ฉฐ, ๊ฐ๋จํ ์์ฝํ๋ฉด ๋ค์๊ณผ ๊ฐ๋ค.


์ ๋ง
Rook์ ํ์ฌ ์ํ๋ ์ํ์ด๋ฉฐ ํ์ฌ๊น์ง์ ์ต์ ์ฃผ์ ๋ฆด๋ฆฌ์ค๋ ๋ค์๊ณผ ๊ฐ์ต๋๋ค. , 2017๋ XNUMX์ ์ถ์(ํ์ฌ ์์ - - 14์ 2018์ผ์ ๋์์ต๋๋ค.) ์ด๋ฏธ XNUMX๋ ์๋ฐ๊ธฐ์๋ ๋ฒ ํ ๋ฒ์ ๊ณผ ์์ ๋ฒ์ (๊ณต์์ ์ผ๋ก ํ๋ก๋์ ์ ์ฌ์ฉํ ์ค๋น๊ฐ ๋์ด ์์) ๋ฑ ๋ณด๋ค ์ฑ์ํ ๋ฒ์ ์ด ์ถ์๋ ๊ฒ์ผ๋ก ์์๋ฉ๋๋ค.
์ ๋ฐ๋ฅด๋ฉด ํ๋ก์ ํธ์์ ๊ฐ๋ฐ์๋ ์ต์ํ ๋ค์ ๋ ๋ฆด๋ฆฌ์ค์ธ 0.7์์ Rook ๊ฐ๋ฐ์ ๋ํ ์์ธํ ๋น์ ์ ๊ฐ์ง๊ณ ์์ต๋๋ค(์ค๋น ์ํ๋ GitHub ์ถ์ ๊ธฐ์ ์์ต๋๋ค). 60%) ๋ฐ 0.8. ์์๋๋ ๋ณ๊ฒฝ ์ฌํญ ์ค์๋ Ceph Block ๋ฐ Ceph Object์ ๋ํ ์ง์์ ๋ฒ ํ ๋ฒ์ ์ํ๋ก ์ด์ ํ๊ณ , CephFS์ ๋ํ ๋ณผ๋ฅจ์ ๋์ ํ๋ก๋น์ ๋, ๊ณ ๊ธ ๋ก๊น โโ์์คํ , ์๋ํ๋ ํด๋ฌ์คํฐ ์ ๋ฐ์ดํธ, ๋ณผ๋ฅจ์ ๋ํ ์ค๋ ์ท ์ง์ ๋ฑ์ด ์์ต๋๋ค.
๋ฃจํฌ๋ฅผ ์ซ์ ์์ผ๋ก ๋ฐ๋ ค๊ฐ์ธ์ (์ง๊ธ๊น์ง๋ ๋งค์ฐ ์ด๊ธฐ ๋จ๊ณ์ธ "๊ฐ์ ์์ค"์์ ะธ )๋ ์ ํ์ ๋ํ ๊ด์ฌ์ด ๋์์ง๋ ์ผ์ข ์ ๋ณด์ฆ์ ๋๋ค. ์์ ์ ์ธ ๋ฒ์ ์ด ์ถ์๋๋ฉด ํด๋ผ์ฐ๋ ์ ํ๋ฆฌ์ผ์ด์ ์ธ๊ณ์์ ์ด๋ป๊ฒ ๋ฐํ์ ๋ง๋ จํ ๊ฒ์ธ์ง๊ฐ ๋ ๋ช ํํด์ง ๊ฒ์ด๋ฉฐ, ์ด๋ ํ์คํ ์๋ก์ด ํ ์คํฐ์ ์ฌ์ฉ์๋ฅผ Rook๋ก ๋์ด๋ค์ผ ๊ฒ์ ๋๋ค.
PS
๋ธ๋ก๊ทธ์์๋ ์ฝ์ด๋ณด์ธ์.
- ยซ";
- ยซ";
- ยซ";
- ยซ";
- ยซ".
์ถ์ฒ : habr.com
