Дизайн-документ
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) — это особый кластерный ресурс области видимости, имя которого состоит из группы и множественного числа, и мы выбираем... Чтобы связать информацию арендатора в префиксе группы.
Вы можете оставить комментарий после Вход в систему
Неприемлемый контент может быть отображен здесь и не будет показан на странице. Вы можете проверить и изменить его с помощью соответствующей функции редактирования.
Если вы подтверждаете, что содержание не содержит непристойной лексики/перенаправления на рекламу/насилия/вульгарной порнографии/нарушений/пиратства/ложного/незначительного или незаконного контента, связанного с национальными законами и предписаниями, вы можете нажать «Отправить» для подачи апелляции, и мы обработаем ее как можно скорее.
Опубликовать ( 0 )