В этой статье:
Для установки и настройки кластера системы Ceph:
Примечание. В дальнейшем описании для главных узлов кластера используются названия kn0, kn1, kn2, для рабочих узлов - kn3, kn4, kn5.
Для установки и настройки Ceph:
Установите python:
apt-get update && apt-get install -y python python-pip parted
Примечание. Все команды необходимо выполнять на одном узле.
Выполните команды:
sudo fdisk -l /dev/sdb
sudo parted -s /dev/sdb mklabel gpt mkpart primary xfs 0% 100%
sudo mkfs.xfs -f /dev/sdb
sudo fdisk -s /dev/sdb
sudo blkid -o value -s TYPE /dev/sdb
Разверните Ceph сначала на узле kn0:
sudo -H pip install ceph-deploy
ceph-deploy new kn0
В текущей директории появится файл ceph.conf.
Отредактируйте ceph.conf в соответствии с файлом, входящим в поставку ./fmp_k8s_v1/ceph/ceph.conf:
[global]
fsid = a997355a-25bc-4749-8f3a-fb07df0f9105 - замените на значение
из вашего файла ceph.conf
mon_initial_members = kn0,kn1,kn3 - замените на имена ваших узлов
mon_host = 10.30.217.17,10.30.217.20,10.30.217.23 - замените на адреса
ваших узлов
auth_cluster_required = cephx
auth_service_required = cephx
auth_client_required = cephx
# Сетевой адрес
public network = 10.30.217.0/24 - замените на адрес вашей сети
rbd default features = 3
[mon.kn0]
host = kn0 - замените на имя вашего узла
mon addr = 10.30.217.20:6789 - замените на
адрес вашего узла
[mon.kn1]
host = kn1 - замените на имя вашего узла
mon addr = 10.30.217.17:6789 - замените на
адрес вашего узла
[mon.kn3]
host = kn3 - замените на имя вашего узла
mon addr = 10.30.217.23:6789 - замените на
адрес вашего узла
# Добавлено ниже config
[osd]
osd_journal_size = 512
osd_pool_default_size = 3
osd_pool_default_min_size = 1
osd_pool_default_pg_num = 64
osd_pool_default_pgp_num = 64
# Задержка для OSD
osd_client_watch_timeout = 15
osd_heartbeat_grace = 20
osd_heartbeat_interval = 5
osd_mon_heartbeat_interval = 15
osd_mon_report_interval = 4
[mon]
mon_osd_min_down_reporters = 1
mon_osd_adjust_heartbeat_grace = false
mon_client_ping_timeout = 15.000000
Примечание. Все имена и адреса узлов замените вашими.
Установите пакеты Ceph сразу на всех узлах:
ceph-deploy install kn0 kn1 kn2 kn3 kn4 kn5
Данная операция займёт продолжительное время.
Настройте мониторинг узла kn1:
# Вместо create-initial
можно указать узел
ceph-deploy mon create-initial
Данная команда создаст ключ роли мониторинга. Для получения ключа выполните команду:
ceph-deploy gatherkeys kn1
После установки Ceph на все узлы добавьте OSD-роли в кластер Ceph. Для хранения данных и журнала они будут использовать раздел /dev/sdb на диске.
Проверьте на рабочих узлах, доступен ли раздел диска /dev/sdb:
ceph-deploy disk list kn3 kn4 kn5
Удалите таблицы разделов на рабочих узлах:
ceph-deploy disk zap
kn3 /dev/sdb
ceph-deploy disk zap kn4 /dev/sdb
ceph-deploy disk zap kn5 /dev/sdb
Данная команда удалит все данные из раздела /dev/sdb на узлах OSD Ceph.
Подготовьте и активируйте все OSD-узлы, убедитесь в отсутствии ошибок:
ceph-deploy osd create
kn3 --data /dev/sdb
ceph-deploy osd create kn4 --data /dev/sdb
ceph-deploy osd create kn5 --data /dev/sdb
Пример результата выполнения команд:
The last output line
should be: Host kn3 is now ready for osd use.
The last output line should be: Host kn4 is now ready for osd use.
The last output line should be: Host kn5 is now ready for osd use.
Отправьте admin keys и конфигурацию на все узлы:
ceph-deploy admin kn0 kn1 kn2 kn3 kn4 kn5
Измените права на key file. Выполните на всех узлах команду:
sudo chmod 644 /etc/ceph/ceph.client.admin.keyring
В результате будет создан кластер Ceph.
Важно. Необходимо явно добавить Ceph Manager Service.
Для добавления Ceph Manager Service:
На узле kn0 (ceph-admin) выполните команду:
ceph auth get-or-create mgr.kn1 mon 'allow profile mgr' osd 'allow *' mds 'allow *'
Команда вернёт значение mgr keyring. Скопируйте его и переходите к следующему шагу.
Выполните команду:
ssh (monitoring role
node, e.g. kn1)
sudo –i
mkdir /var/lib/ceph/mgr/ceph-kn1
Отредактируйте файл vi /var/lib/ceph/mgr/ceph-kn1/keyring. Вставьте в него значение mgr keyring из шага 1.
Выполните команду:
chmod 600 /var/lib/ceph/mgr/ceph-kn1/keyring
chown ceph-ceph –R /var/lib/ceph/mgr/
Запустите ceph-mgr менеджер:
sudo systemctl start ceph-mgr.target
Проверьте статус кластера Ceph:
sudo ceph –s
Пример результата выполнения команды:
cluster:
id: a997355a-25bc-4749-8f3a-fb07df0f9105
health: HEALTH_OK
services:
mon: 3 daemons, quorum kn1,kn3, kn0
mgr: kn1(active)
mds: cephfs-1/1/1 up {0=kn1=up:active}, 2 up:standby
osd: 3 osds: 3 up, 3 in
data:
pools: 0 pools, 0 pgs
objects: 0 objects, 0 B
usage: 3.0 GiB used, 147 GiB / 150 GiB avail
pgs:
Если кластер вернул ответ HEALTH_OK, то кластер работает.
Для использования CephFS требуется, как минимум, один сервер метаданных. Для его создания выполните команду:
ceph-deploy mds create {ceph-node}
Ceph-менеджер работает в активном режиме или в режиме ожидания. Развертывание дополнительных Ceph-менеджеров гарантирует, что в случае выхода из строя одного из Ceph-менеджеров другой Ceph-менеджер сможет продолжить выполнение операций без перерывов в обслуживании.
Для развертывания дополнительных Ceph-менеджеров:
Выполните команду:
ceph-deploy mgr create node2 node3
Выполните следующие команды для проверки работы Ceph:
получение состояния кластера Ceph:
sudo ceph -s
просмотр всех существующих пулов, занимаемого пространства:
sudo ceph df
просмотр состояния OSD-узлов:
sudo ceph osd tree
Создайте отдельный пул kube для кластера Kubernetes (k8s):
sudo ceph osd pool create kube 32 32
Пример результата выполнения команды:
>> pool 'kube' created //Просмотрите документацию ceph по конфигурации пула, PG и CRUSH, чтобы установить соответствующие значения для PG и PGP
Проверьте количество реплик для пула:
$ sudo ceph osd pool get kube size
Пример результата выполнения команды:
size: 3
Проверьте количество placement groups для пула:
$ sudo ceph osd pool get kube pg_num
Пример результата выполнения команды:
pg_num: 32
Свяжите созданный пул с rbd-приложением для его использования в качестве устройства RADOS:
$ sudo ceph osd pool application enable kube rbd
Пример результата выполнения команды:
>>enabled application 'rbd' on pool 'kube'
Создайте отдельного пользователя для пула kube и сохраните ключи, требуемые для доступа k8s к хранилищу:
$ sudo ceph auth get-or-create
client.kube mon 'allow r' osd 'allow rwx
pool=kube'
[client.kube]
key = AQC6DX1cAJD3LRAAUC2YpA9VSBzTsAAeH30ZrQ==
mkdir ./to_etc
sudo ceph auth get-key client.admin > ./to_etc/client.admin
sudo cp ./to_etc/client.admin /etc/ceph/ceph.client.admin.keyring
sudo chmod 600 /etc/ceph/ceph.client.admin.keyring
Приведите содержимое файла к виду:
[client.admin]
key = AQCvWnVciE7pERAAJoIDoxgtkfYKMnoBB9Q6uA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
sudo ceph auth get-key client.kube > ./to_etc/ceph.client
sudo cp ./to_etc/ceph.client /etc/ceph/ceph.client.kube.keyring
sudo chmod 644 /etc/ceph/ceph.client.kube.keyring
Приведите содержимое файла к виду:
[client.kube]
key = AQCvWnVciE7pERAAJoIDoxgtkfYKMnoBB9Q6uA==
caps mds = "allow *"
caps mgr = "allow *"
caps mon = "allow *"
caps osd = "allow *"
После выполнения действий распределенная файловая система Ceph будет подготовлена, далее перейдите к подготовке кластера Kubernetes.
См. также:
Подготовка среды для продукта «Форсайт. Мобильная платформа» | Подготовка кластера Kubernetes