Picodata в Kubernetes¶
Структура чарта Picodata¶
Чарт — это пакет Helm с набором ресурсов, необходимых для запуска приложения, службы или любой другой программы внутри кластера Kubernetes.
Структура чарта Picodata:
picodata/
Chart.yaml # >>> Файл с информацией о чарте
values.yaml # >>> Файл конфигурации чарта с параметрами по умолчанию
# (!) Содержит параметры кластера и инстанса для запуска
# Picodata
templates/ # >>> Каталог шаблонов, из которых, в сочетании с
# параметрами из файла values.yaml, будут сгенерированы
# корректные файлы манифеста Kubernetes
NOTES.txt # ОПЦИОНАЛЬНО: Текстовый файл с короткими заметками
# по использованию чарта
cm.yml # ШАБЛОН: ConfigMap
# (!) Определяет файл конфигурации для каждого инстанса
# Picodata
ingress.yml # ШАБЛОН: Ingress
picodata.yml # ШАБЛОН: StatefulSet
picodata-hpa.yml # ШАБЛОН: HorizontalPodAutoscaler
service.yml # ШАБЛОН: Service
serviceaccount.yml # ШАБЛОН: ServiceAccount
_helpers.tpl # >>> Файл со вспомогательными функциями, используемыми
# в шаблонах
См. также Helm Docs:
- Topics — The Chart File Structure
- Topics — The Chart.yaml File
- The Chart Best Practices Guide
- The Chart Template Developer's Guide
Состав тестового кластера¶
Состав кластера Picodata в чарте определяется указанными в файле
values.yaml
параметрами объекта tiers
:
- количество тиров — каждый со своим именем
tierName
replicationFactor
— фактор репликации тираtierName
replicas
— общее количество подов Picodata, которое будет запущено в кластере Kubernetes
В чарте Picodata задан один тир, для которого указаны следующие значения:
<...>
tiers:
- tierName: default
replicationFactor: 1
replicas: 2
<...>
<...>
Иначе говоря, по умолчанию чарт Picodata создаст кластер с тиром default, содержащим два репликасета — по одному инстансу на репликасет.
Развертывание кластера Picodata в кластере Kubernetes¶
Запустите кластер Kubernetes — например, с помощью пакета Minikube:
minikube start
Склонируйте репозиторий picodata-chart
:
git clone https://git.picodata.io/core/picodata-chart.git
Перейдите в директорию, содержащую чарт Picodata:
cd picodata-chart/picodata/
С помощью менеджера пакетов Helm установите чарт Picodata в кластер Kubernetes:
helm upgrade --install picodata -n picodata . --create-namespace
Проверьте статус подов default-picodata-*
в кластере Kubernetes:
$ kubectl get pods -n picodata
NAME READY STATUS RESTARTS AGE
default-picodata-0 1/1 Running 1 (9h ago) 9h
default-picodata-1 1/1 Running 1 (9h ago) 9h
Проверка кластера Picodata¶
Протокол PostgreSQL (psql)¶
Пробросьте локальный порт 5432 к тому же порту пода default-picodata-0
:
$ kubectl port-forward -n picodata default-picodata-0 5432
Forwarding from 127.0.0.1:5432 -> 5432
Forwarding from [::1]:5432 -> 5432
Откройте еще один терминал и подключитесь к инстансу Picodata в поде
default-picodata-0
по протоколу PostgreSQL:
psql postgres://admin:T0psecret@127.0.0.1:5432
Для подключения используется учетная запись администратора, пароль которой
задан переменной окружения PICODATA_ADMIN_PASSWORD
в шаблоне чарта
Picodata templates/picodata.yml
.
Проверьте статус инстансов в кластере Picodata, прочитав системную таблицу
_pico_instance
:
admin=> SELECT name, replicaset_name, current_state, tier
FROM _pico_instance;
name | replicaset_name | current_state | tier
-------------+-----------------+---------------+---------
default_1_1 | default_1 | ["Online",1] | default
default_2_1 | default_2 | ["Online",1] | default
(2 строки)
Веб-интерфейс (Web UI)¶
Пробросьте локальный порт 8081 к тому же порту пода default-picodata-0
:
$ kubectl port-forward -n picodata default-picodata-0 8081
Forwarding from 127.0.0.1:8081 -> 8081
Forwarding from [::1]:8081 -> 8081
Откройте страницу http://127.0.0.1:8081 для проверки статуса инстансов в кластере Picodata.
См. также:
Командная оболочка (Bash)¶
Подключитесь к командной оболочке Bash пода default-picodata-0
:
kubectl exec -it default-picodata-0 -n picodata -- bash
Подключитесь к консоли администратора Picodata:
picodata admin admin.sock
Проверьте статус инстансов в кластере Picodata, прочитав системную таблицу
_pico_instance
:
(admin) sql> SELECT name, replicaset_name, current_state, tier
FROM _pico_instance;
+-------------+-----------------+---------------+---------+
| name | replicaset_name | current_state | tier |
+=========================================================+
| default_1_1 | default_1 | ["Online", 1] | default |
|-------------+-----------------+---------------+---------|
| default_2_1 | default_2 | ["Online", 1] | default |
+-------------+-----------------+---------------+---------+
(2 rows)
Дополнительные команды
Удалить чарт picodata
и связанные с ним поды из пространства имен
picodata
в кластере Kubernetes:
helm uninstall picodata -n picodata
Вывести отладочный журнал для пода default-picodata-0
:
kubectl logs -n picodata default-picodata-0
Вывести перечень событий для подов из пространства имен picodata
:
kubectl events -n picodata
Вывести отладочный журнал для локального кластера Kubernetes:
minikube logs
Остановить локальный кластер Kubernetes:
minikube stop
Удалить локальный кластер Kubernetes:
minikube delete