Перейти к содержанию

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:

Состав тестового кластера

Состав кластера Picodata в чарте определяется указанными в файле values.yaml параметрами объекта tiers:

  • количество тиров — каждый со своим именем tierName
  • replicationFactorфактор репликации тира tierName
  • replicas — общее количество подов Picodata, которое будет запущено в кластере Kubernetes

В чарте Picodata задан один тир, для которого указаны следующие значения:

values.yaml
<...>
  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