1 В избранное 0 Ответвления 0

OSCHINA-MIRROR/kubewharf-kubezoo

Присоединиться к Gitlife
Откройте для себя и примите участие в публичных проектах с открытым исходным кодом с участием более 10 миллионов разработчиков. Приватные репозитории также полностью бесплатны :)
Присоединиться бесплатно
Клонировать/Скачать
design.md 6.9 КБ
Копировать Редактировать Web IDE Исходные данные Просмотреть построчно История
gitlife-traslator Отправлено 26.11.2024 00:13 a6f5fd5

Дизайн-документ

Введение

KubeZoo реализует функцию мультиарендности плоскости управления на основе основной концепции протокольной конверсии. Добавляя уникальный идентификатор арендатора в «имя/пространство имён» и другие поля ресурса, KubeZoo решает проблему конфликтов именования между ресурсами с одинаковыми именами разных арендаторов в одном и том же вышестоящем кластере Kubernetes.

Обзор архитектуры

Как показано на рисунке ниже, KubeZoo — это независимо развёрнутая служба, состоящая из безсостояния kubezoo-server и etcd, с хорошей горизонтальной масштабируемостью. KubeZoo предоставляет унифицированный портал доступа к Kubernetes для арендаторов и перенаправляет запросы от арендаторов к вышестоящему кластеру Kubernetes после перевода протокола, поэтому вышестоящий кластер фактически завершает выражение ресурсов. Плоскость управления вышестоящего кластера Kubernetes в основном включает Master и Etcd. Мы рекомендуем реализовать плоскость данных с помощью эластичных контейнеров (таких как AWS Fargate, Aliyun ECI и т. д.), чтобы иметь более сильные функции изоляции сети и хранилища, такие как VPC и т. д.

KubeZoo: состоит из безсостояния kubezoo-server и Etcd. K8S Master: Master: apiserver / scheduler / controller-manager / Etcd Virtual Kubelet: соединяет плоскость управления и плоскость данных, соединяет сервисы эластичных контейнеров различных публичных облачных провайдеров и, наконец, завершает выражение таких ресурсов, как Pod/Service в Master; Сервис экземпляров контейнеров: сервисы эластичных контейнеров публичного облака, такие как AWS Fargate, Aliyun ECI и т.д.

Управление арендаторами

В KubeZoo есть встроенный объект Tenant, который описывает основную информацию об арендаторе. Имя является обязательным полем, глобально уникальным и фиксированной 6-битной строкой (включая символы или числа). Теоретически он может управлять 2176782336 арендаторами (36^6). Объект Tenant хранится в etcd KubeZoo в следующем формате:

apiVersion: tenant.kubezoo.io/v1alpha1
kind: Tenant
metadata:
name: "foofoo"
annotations:
  ...... # add schema for tenant(optional)
spec:
  id: 0

KubeZoo обеспечивает функцию выдачи сертификатов, и администраторы имеют возможность управлять жизненным циклом арендатора. Всякий раз, когда администратор создаёт арендатора, для него выдаётся сертификат X509. Сертификат содержит информацию об арендаторе, такую как имя и т. д., и записывает аннотации. В то же время встроенные пространство имён, rbac и т. д. каждого арендатора синхронизируются с вышестоящим Kubernetes.

apiVersion: tenant.kubezoo.io/v1alpha1
kind: Tenant
metadata:
  name: "foofoo"
  annotations:
    kubezoo.io/tenant.kubeconfig.base64: YXBpVmVy...ExRbz0K
    ......
spec:
  id: 0
status: {}

Всякий раз, когда администратор удаляет арендатора, запускается восстановление ресурса арендатора. И KubeZoo удаляет все ресурсы арендатора Kubernetes выше по течению, очищает метаинформацию на стороне KubeZoo. Поскольку управление жизненным циклом арендаторов по существу является управлением метаинформацией объекта арендатора, выдачей сертификатов и синхронизацией ресурсов. Процесс прост и не требует создания физических Master/Etcd и пулов вычислительных ресурсов, поэтому KubeZoo имеет лёгкую, второго уровня массивную функцию управления жизненным циклом арендаторов.

Протокольная конверсия

Ресурсы области видимости пространства имён

Kubernetes имеет около 40+ ресурсов области видимости пространств имён, таких как deployment / statefulset / pod / configmap и т. д. Связывая информацию об арендаторах в поле пространства имён каждого ресурса, достигается функция мультиарендности ресурсов области видимости пространства имён.

Кластерные ресурсы области видимости

Kubernetes имеет около 20+ кластерных ресурсов области видимости, таких как pv / namespace / storageclass и т. д. Связывая информацию об арендаторах в имени, достигается функция мультиарендности кластерных ресурсов области видимости.

Пользовательский ресурс

Пользовательское определение ресурса (CRD) — это особый кластерный ресурс области видимости, имя которого состоит из группы и множественного числа, и мы выбираем... Чтобы связать информацию арендатора в префиксе группы.

img

Опубликовать ( 0 )

Вы можете оставить комментарий после Вход в систему

1
https://api.gitlife.ru/oschina-mirror/kubewharf-kubezoo.git
git@api.gitlife.ru:oschina-mirror/kubewharf-kubezoo.git
oschina-mirror
kubewharf-kubezoo
kubewharf-kubezoo
main