KubeZoo协议转换

目的

KubeZoo基于协议转换核心理念实现控制面多租户功能,通过在资源的name/namespace等字段上增加租户的唯一标识 ,解决不同租户的同名资源在同一个上游k8s集群命名冲突的问题。

架构

KubeZoo:由无状态的kubezoo-server和Etcd组成。
K8S Master
Master:apiserver/scheduler/controller-manager/Etcd
VirtualKubelet:衔接控制面和数据面,对接不同的公有云厂商弹性容器服务,最终完成Master中Pod/Service等资源的表达。
ContainerInstanceService:公有云弹性容器服务。

租户管理

KubeZoo内置Tenant对象,描述租户的基本信息,其中name是必须字段,全局唯一,长度固定6位字符串(包括字符或者数字),理论上可以管理2176782336个租户(36^6),Tenant对象存储于KubeZoo的etcd中。
每当管理员创建租户后,即为该租户签发一份X509证书,证书中包含了租户的信息,写入annotations;将每个租户内置的namespace、rbac等同步到上游的Kubernetes中。

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

协议转换

Namespace Scope Resource

Cluster Scope Resource

Custom Resource

参考资料

https://github.com/kubewharf/kubezoo/blob/main/docs/design-cn.md

posted on 2023-11-06 09:05  王景迁  阅读(31)  评论(0编辑  收藏  举报

导航