From 1f51d67935d1803db01d2160de6a626b4e3becd8 Mon Sep 17 00:00:00 2001 From: Viktor Kramarenko Date: Mon, 6 May 2024 14:22:50 +0300 Subject: [PATCH] [controller] Add docs for local-csi-node-watcher controller Signed-off-by: Viktor Kramarenko --- docs/FAQ.ru.md | 38 +++++++++- docs/README.ru.md | 188 ++++++++++++++++++++++------------------------ 2 files changed, 125 insertions(+), 101 deletions(-) diff --git a/docs/FAQ.ru.md b/docs/FAQ.ru.md index a4b996bf..54adb55c 100644 --- a/docs/FAQ.ru.md +++ b/docs/FAQ.ru.md @@ -22,11 +22,13 @@ Overprovisioning в LVMThin нужно использовать с осторо Узлы, которые будут задействованы модулем, определяются специальными метками, указанными в поле `nodeSelector` в настройках модуля. Для отображения и редактирования настроек модуля, можно выполнить команду: + ```shell kubectl edit mc sds-local-volume ``` Примерный вывод команды: + ```yaml apiVersion: deckhouse.io/v1alpha1 kind: ModuleConfig @@ -44,10 +46,12 @@ status: ``` Для отображения существующих меток, указанных в поле `nodeSelector`, можно выполнить команду: + ```shell kubectl get mc sds-local-volume -o=jsonpath={.spec.settings.dataNodes.nodeSelector} ``` Примерный вывод команды: + ```yaml nodeSelector: my-custom-label-key: my-custom-label-value @@ -60,6 +64,7 @@ kubectl -n d8-sds-local-volume get secret d8-sds-local-volume-controller-config ``` Примерный вывод команды: + ```yaml nodeSelector: kubernetes.io/os: linux @@ -73,6 +78,7 @@ nodeSelector: > Обратите внимание, что в поле `nodeSelector` может быть указано любое количество меток, но важно, чтобы каждая из указанных меток присутствовала на узле, который Вы собираетесь использовать для работы с модулем. Именно при наличии всех указанных меток на выбранном узле, произойдет запуск pod-а `sds-local-volume-csi-node`. После добавление меток на узлах должны быть запущены pod-ы `sds-local-volume-csi-node`. Проверить их наличие можно командой: + ```shell kubectl -n d8-sds-local-volume get pod -owide ``` @@ -85,6 +91,16 @@ nodeSelector: kubectl -n d8-sds-local-volume get po -owide ``` +Если pod отсутствует, необходимо проверить, что на нужном узле имеются все указанные в секрете `d8-sds-local-volume-controller-config` метки. + +```shell +kubectl -n d8-sds-local-volume get secret d8-sds-local-volume-controller-config -o jsonpath='{.data.config}' | base64 --decode +``` + +```shell +kubectl get node %node-name% --show-labels +``` + Если pod отсутствует, значит данный узел не удовлетворяет `nodeSelector`, указанному в настройках `ModuleConfig` `sds-local-volume`. Настройка модуля и `nodeSelector` описаны [здесь](#я-не-хочу-чтобы-модуль-использовался-на-всех-узлах-кластера-как-мне-выбрать-желаемые-узлы-). @@ -99,32 +115,38 @@ kubectl -n d8-sds-local-volume logs -l app=sds-local-volume-controller Для вывода узла из-под управления модуля необходимо убрать метки, указанные в поле `nodeSelector` в настройках модуля `sds-local-volume`. Проверить наличие существующих меток в `nodeSelector` можно командой: + ```shell kubectl get mc sds-local-volume -o=jsonpath={.spec.settings.dataNodes.nodeSelector} ``` Примерный вывод команды: + ```yaml nodeSelector: my-custom-label-key: my-custom-label-value ``` Снимите указанные в `nodeSelector` метки с желаемых узлов. + ```shell kubectl label node %node-name% %label-from-selector%- ``` > Обратите внимание, что для снятия метки необходимо после его ключа вместо значения сразу же поставить знак минуса. В результате pod `sds-local-volume-csi-node` должен быть удален с желаемого узла. Для проверки состояния можно выполнить команду: + ```shell kubectl -n d8-sds-local-volume get po -owide ``` Если pod `sds-local-volume-csi-node` после удаления метки `nodeSelector` все же остался на узле, пожалуйста, убедитесь, что указанные в конфиге `d8-sds-local-volume-controller-config` в `nodeSelector` метки действительно успешно снялись с выбранного узла. Проверить это можно командой: -> ```shell -> kubectl get node %node-name% --show-labels=true -> ``` + +```shell +kubectl get node %node-name% --show-labels +``` + Если метки из `nodeSelector` не присутствуют на узле, то убедитесь, что данному узлу не принадлежат `LVMVolumeGroup` ресурсы, использующиеся `LocalStorageClass` ресурсами. Подробнее об этой проверке можно [здесь](#как-проверить-имеются-ли-зависимые-ресурсы-lvmvolumegroup-на-узле-). @@ -135,15 +157,19 @@ kubectl -n d8-sds-local-volume get po -owide ## Как проверить, имеются ли зависимые ресурсы `LVMVolumeGroup` на узле? Для проверки таковых ресурсов необходимо выполнить следующие шаги: 1. Отобразить имеющиеся `LocalStorageClass` ресурсы + ```shell kubectl get lsc ``` + 2. Проверить у каждого из них список используемых `LVMVolumeGroup` ресурсов + ```shell kubectl get lsc %lsc-name% -oyaml ``` Примерный вид `LocalStorageClass` + ```yaml apiVersion: v1 items: @@ -164,13 +190,17 @@ items: phase: Created kind: List ``` + > Обратите внимание на поле spec.lvm.lvmVolumeGroups - именно в нем указаны используемые `LVMVolumeGroup` ресурсы. 3. Отобразите список существующих `LVMVolumeGroup` ресурсов + ```shell kubectl get lvg ``` -Примерный вывод `LVMVolumeGroup` ресурсов + +Примерный вывод `LVMVolumeGroup` ресурсов: + ```text NAME HEALTH NODE SIZE ALLOCATED SIZE VG AGE lvg-on-worker-0 Operational node-worker-0 40956Mi 0 test-vg 15d diff --git a/docs/README.ru.md b/docs/README.ru.md index 0bc4b585..756b05aa 100644 --- a/docs/README.ru.md +++ b/docs/README.ru.md @@ -23,37 +23,37 @@ moduleStatus: experimental - Включить модуль sds-node-configurator - ```yaml - kubectl apply -f - < Пожалуйста, перед созданием `LVMVolumeGroup` убедитесь, что на данном узле запущен pod `sds-local-volume-csi-node`. Это можно сделать командой: +> > ```shell > kubectl -n d8-sds-local-volume get pod -owide > ``` @@ -104,26 +106,26 @@ moduleStatus: experimental - Создать ресурс [LVMVolumeGroup](../../sds-node-configurator/stable/cr.html#lvmvolumegroup) для узла `worker-0`: - ```yaml - kubectl apply -f - < Обратите внимание, что для успешного вывода узла из-под управления модуля, необходимо, чтобы на узле не было создано ресурсов `LVMVolumeGroup`, которые использовались бы в ресурсах `LocalStorageClass`, то есть, которые использовались бы `Storage Class` с `provisioner` `local.csi.storage.deckhouse.io`. Подробнее про процедуру проверки описано [здесь](FAQ.ru.md#как-проверить-имеются-ли-зависимые-ресурсы-lvmvolumegroup-на-узле-). - ## Системные требования и рекомендации ### Требования