Об-оператор, как и другие операторы, предназначен для обеспечения бесшовной работы OceanBase в контейнерах на кластере Kubernetes.
На данном этапе об-оператор является версией в стадии развития, то есть это базовая структура с минимальным набором функций, которая будет постоянно дорабатываться и улучшаться.
Об-оператор уже поддерживает создание и удаление кластеров OceanBase, полный цикл управления жизненным циклом узлов и экспонирование через сервис для пользователя. В будущем планируется поддержка управления арендами, управления об-прокси, работы с несколькими кластерами Kubernetes и т.д.
В настоящее время поддерживается развертывание об-оператора с использованием YAML и Kustomize. Позднее будет поддерживаться развертывание с помощью Helm.
OceanBase имеет высокую степень отказоустойчивости.
Кластер OceanBase состоит из нескольких зон и множества серверов OBServer. Уникальным идентификатором кластера OceanBase являются имя кластера и его идентификатор.
Один кластер OceanBase состоит из нескольких зон. Зона — это аббревиатура от доступной зоны (Availability Zone).Зона представляет собой логическую концепцию, обычно представляющую собой группу машин в одном помещении. Физически одна зона часто эквивалентна одному помещению, одному центру данных или одному IDC. Для обеспечения более высокого уровня безопасности данных и надежности услуг один кластер OceanBase обычно распределяется между тремя помещениями в одном городе, где три реплики одного и того же набора данных находятся в трёх разных зонах.OceanBase поддерживает распределение данных между различными регионами (region) и различные регионы обычно расположены на значительном расстоянии друг от друга, что позволяет удовлетворять требованиям региональной защиты от аварийных ситуаций. Один регион может содержать одну или несколько зон.
В случае с Kubernetes требуется помечать различные узлы метками для идентификации различных зон и регионов.
На текущем этапе об-оператор поддерживает многозонное развертывание, но пока не поддерживает многорегиональное развертывание.
Проект разделён на три части: контроллер StatefulApp, контроллер OBServer и оркестратор оператора.
Контроллер StatefulApp отвечает за обслуживание Pod, PVC и PV. Контроллер OBServer отвечает за обслуживание серверов OBServer. Оркестратор оператора отвечает за управление об-оператором между несколькими кластерами Kubernetes (этот модуль ещё не реализован).
Из-за того, что основная информация регистрации и адреса связи серверов OBServer представлены в виде IP-адресов, уровень ресурсов Kubernetes основан на простых Pod и использует специализированные CRD для создания пользовательских ресурсов.Контроллер StatefulApp является средством управления, аналогичным StatefulSet, но немного отличается от него:
Каждый Pod будет отображаться как один OBServer.
На данный момент в одном Pod содержится только один контейнер OBServer, но в будущем будут поддерживаться контейнеры логирования и мониторинга в виде Sidecar.
В контейнере OBServer находится легковесный агент, который взаимодействует с контроллером OBServer, выполняет операции эксплуатации и поддерживает процесс OBServer.
Оператор OB создает три типа CRD: OBCluster, OBRootService и OBServer. OBZone и OBRootService являются подресурсами OBCluster.
OBCluster: Описание кластера OceanBase, управление состоянием целиком, глобальный взгляд, без деталей. Пользователям требуется самостоятельно определять конфигурацию OBCluster.```yaml apiVersion: cloud.oceanbase.com/v1 kind: OBCluster metadata: namespace: oceanbase name: ob-test spec: version: 3.1.1-4 clusterID: 1 topology: - cluster: cn zone: - name: zone1 region: region1 nodeSelector: topology.kubernetes.io/zone: zone1 replicas: 1 - name: zone2 region: region1 nodeSelector: topology.kubernetes.io/zone: zone2 replicas: 1 - name: zone3 region: region1 nodeSelector: topology.kubernetes.io/zone: zone3 replicas: 1 resources: cpu: 2 memory: 10Gi storage: - name: data-file storageClassName: "local-path" size: 50Gi - name: data-log storageClassName: "local-path" size: 50Gi - name: log storageClassName: "local-path" size: 30Gi status: status: Ready topology: - cluster: cn clusterStatus: Ready lastTransitionTime: "2021-12-01T07:07:55Z" zone: - name: zone1 region: region1 zoneStatus: Ready expectedReplicas: 1 availableReplicas: 1 - name: zone2 region: region1 zoneStatus: Ready expectedReplicas: 1 availableReplicas: 1 - name: zone3 region: region1 zoneStatus: Ready expectedReplicas: 1 availableReplicas: 1
Зона представляет собой состояние сервера OB в контексте зоны. Пользователи могут использовать OBZone для просмотра состояния сервера OB в кластере OceanBase. Создание зон пользователями не требуется; оператор ob-operator автоматически поддерживает и регулярно обновляет эту информацию.```yaml
apiVersion: cloud.oceanbase.com/v1
kind: OBZone
metadata:
namespace: oceanbase
name: obzone-ob-test
labels:
app: ob-test
spec:
topology:
- cluster: cn
zone:
- name: zone1
nodeSelector:
topology.kubernetes.io/zone: zone1
region: region1
replicas: 1
- name: zone2
nodeSelector:
topology.kubernetes.io/zone: zone2
region: region1
replicas: 1
- name: zone3
nodeSelector:
topology.kubernetes.io/zone: zone3
region: region1
replicas: 1
status:
topology:
- cluster: cn
zone:
- name: zone1
nodes:
- serverIP: 10.10.10.1
status: active
- name: zone2
nodes:
- serverIP: 10.10.10.2
status: active
- name: zone3
nodes:
- serverIP: 10.10.10.3
status: active
Классификатор распределения RootService на уровне кластера и состояние каждого отдельного RootService. Пользователи могут использовать RootService для просмотра состояния RootService в кластере OceanBase. Создание RootService пользователями не требуется; ob-operator автоматически поддерживает и регулярно обновляет эту информацию.
apiVersion: cloud.oceanbase.com/v1
kind: RootService
metadata:
namespace: oceanbase
name: rs-ob-test
labels:
app: ob-test
spec:
topology:
- cluster: cn
zone:
- name: zone1
nodeSelector:
topology.kubernetes.io/zone: zone1
region: region1
replicas: 1
- name: zone2
nodeSelector:
topology.kubernetes.io/zone: zone2
region: region1
replicas: 1
- name: zone3
nodeSelector:
topology.kubernetes.io/zone: zone3
region: region1
replicas: 1
status:
topology:
- cluster: cn
zone:
- name: zone1
role: 1
serverIP: 10.10.10.1
status: active
- name: zone2
role: 2
serverIP: 10.10.10.2
status: active
- name: zone3
role: 2
serverIP: 10.10.10.3
status: active
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )