
29-январда, CNCF (Cloud Native Computing Foundation), Кубернетес, Prometheus жана контейнерлер дүйнөсүндөгү жана булуттагы башка Open Source өнүмдөрүнүн артында турган уюмдун техникалык комитети, долбоорду кабыл алуу жөнүндө Каркыра алардын катарына. Бул "Кубернетестеги бөлүштүрүлгөн сактоо оркестри" менен таанышуу үчүн эң сонун мүмкүнчүлүк.
Кандай Rook?
Go программасында жазылган программа ( акысыз Apache License 2.0 астында), маалымат кампаларын автоматташтырылган функциялар менен камсыз кылуу үчүн иштелип чыккан өзүн-өзү башкаруу, өзүн-өзү масштабдоо жана өзүн-өзү айыктыруу. Бул үчүн, Rook автоматташтырат (Kubernetes чөйрөсүндө колдонулган маалымат дүкөндөрү үчүн): жайгаштыруу, жүктөө, конфигурациялоо, камсыздоо, масштабдоо, жаңыртуулар, миграция, кырсыктан калыбына келтирүү, мониторинг жана ресурстарды башкаруу.
Долбоор альфа баскычында жана Kubernetes кластерлеринде Ceph бөлүштүрүлгөн сактоо тутумун уюштурууга адистешкен. Авторлор ошондой эле башка сактоо тутумдарын колдоо пландарын жарыялашат, бирок бул кийинки чыгарылыштарда болбойт.
Компоненттер жана техникалык түзүлүш
Руктун Kubernetes ичиндеги иши атайын операторго негизделген (биз Kubernetes операторлору жөнүндө көбүрөөк жазганбыз ), ал сактоо конфигурациясын автоматташтырат жана анын мониторингин ишке ашырат.
Ошентип, Рок оператору жайгаштыруу жана репозиторийди андан ары тейлөө үчүн зарыл болгон нерселердин бардыгын камтыган контейнер болуп көрүнөт. Оператордун милдеттерине төмөнкүлөр кирет:
- Ceph сактоо демондору үчүн DaemonSet түзүү () жөнөкөй RADOS кластери менен;
- Ceph мониторинги үчүн поддондорду түзүү (менен , кластердин абалын текшерүү; кворум үчүн, көпчүлүк учурларда үч нускасы жайгаштырылат, ал эми алардын бирөө түшүп калса, жаңысы көтөрүлөт);
- CRD башкаруу () өзү үчүн , , (объекттерде PUT/GET аткарган HTTP сурамдарын тейлөө үчүн ресурстардын жана кызматтардын топтому - алар S3 жана Swift API менен шайкеш келет), дагы ;
- бардык керектүү кызматтарды ишке киргизүү үчүн подкасттарды инициализациялоо;
- Rook агенттерин түзүү.
Agents of Rook ар бир Kubernetes түйүнүндө жайгаштырылган өзүнчө подколор менен көрсөтүлөт. Агенттин максаты - плагин конфигурациясы , бул Kubernetesтеги сактоо көлөмүн колдоону камсыз кылат. Агент сактагычтын иштешин ишке ашырат: тармактык сактоо түзүлүштөрүн туташтырат, томдорду орнотот, файл тутумун форматтайт ж.б.

Rook компоненттеринин жалпы Кубернетес кластердик схемасындагы орду жана ролу
Rook сактоо үч түрүн сунуш кылат:
- (тосуу,
StorageClass) — кампаны бир очокко орнотот; - (зат,
ObjectStore) - Kubernetes кластеринин ичинде жана сыртында жеткиликтүү (S3 API аркылуу); - (Бөлүшүлгөн файл системасы,
Filesystem) бир нече поддондон окуу жана жазуу үчүн орнотула турган файл системасы.
Rook ички элементтери төмөнкүлөрдү камтыйт:
- Mons — Ceph мониторинги үчүн кабыктар (мурда айтылган ceph-mon менен);
- OSDs - ceph-osd демондору бар кабыктар (Object Storage Demons);
- М.Г.Р. - жини бар кабыктар (Ceph Manager), ал тышкы системалар үчүн кошумча мониторинг мүмкүнчүлүктөрүн жана интерфейстерин камсыз кылат (мониторинг/контролдоо);
- RGW (Кошумча) - объект сактагычы бар уячалар;
- MDS (Кошумча) - жалпы файл системасы менен подколор.

Бардык Rook демондору (Mons, OSDs, MGR, RGW, MDS) бир экиликке (rook) контейнерде чуркоо.
Rook долбооруна кыскача киришүү үчүн бул кыска (12 слайд) да пайдалуу болушу мүмкүн. Бассам Таббарадан (CTO Quantum Corp).
Rook иштетүү
Rook оператору 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 маалыматтары үчүн туруктуу сактагыч катары колдонулган учурларда, авторлор бул каталогдо кеминде 5 ГБ бош диск мейкиндигин сунушташат.
Болгону конфигурациядан кластерди түзүү жана подъезддердин кластерде (ат мейкиндигинде) түзүлгөндүгүн текшерүү гана калды. 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ге чейин жаңыртуу мисалында кеңири кадам-кадам инструкцияларды төмөнкү жерден тапса болот. .
Өткөн ноябрда Rook блогунда окшоштук өндүрүмдүүлүк EBS менен. Анын натыйжалары көңүл бурууга татыктуу жана кыскача айтканда, алар төмөнкүдөй:


келечеги
Руктун учурдагы статусу альфа жана эң акыркы негизги релиз , 2017-жылдын ноябрында чыгарылган (учурдагы оңдоо - — 14-декабрда чыкты). 2018-жылдын биринчи жарымында дагы жетилген версиялардын релиздери күтүлүүдө: бета жана туруктуу (өндүрүштө колдонууга расмий түрдө даяр).
ылайык Долбоордун алкагында, иштеп чыгуучулар жок дегенде кийинки эки чыгарылышта Rookту өнүктүрүү боюнча кеңири көрүнүшкө ээ: 0.7 (анын даярдыгы GitHub трекеринде. катары 60% жана 0.8. Күтүлүп жаткан өзгөрүүлөрдүн арасында Ceph Block жана Ceph Object колдоону бета версия статусуна которуу, CephFS үчүн томдорду динамикалык камсыздоо, өркүндөтүлгөн каттоо системасы, автоматташтырылган кластер жаңыртуулары, томдор үчүн снапшоттарды колдоо.
Санга Рукту кабыл алуу (Азырынча эң алгачкы этапта - "баштапкы деңгээл" - менен бирдей и ) продукцняга болгон кызыгуунун есушунун гарантиясы болуп саналат. Булуттук тиркемелер дүйнөсүндө анын ордун кантип ээлей тургандыгы туруктуу версиялар чыккандан кийин айкыныраак болот, бул, албетте, жаңы тестерлерди жана колдонуучуларды Rookке алып келет.
PS
Биздин блогдон дагы окуңуз:
- «";
- «";
- «";
- «";
- ««.
Source: www.habr.com
