Kubernetes 多租户

一. 概念和原则 #

  1. 租户是指一组拥有访问特定软件资源权限的用户集合,在多租户环境中,它还包括共享的应用、服务、数据和各项配置等。
  2. 多租户集群必须将租户彼此隔离
  3. 集群须在租户之间公平的分配集群资源。

二. Overview #

三. 方案B 解决方案 #

1. 认证 #
  • 识别访问的用户是谁
  • K8s可管理2类用户
    • ServiceAccount
      是存在于K8s中的虚拟账户;
      原生支持的动态认证;
    • 用户认证
      webhook是和企业认证平台集成的重要手段
2. 授权 #

授权

3. 隔离 #
  • 节点隔离
    Taints和Toleration机制
    [Kubernetes 调度 - 污点和容忍度详解] (https://mp.weixin.qq.com/s/rza4euQCLuMLTI5fHdj67Q)
    Taint 和 Toleration(污点和容忍)

  • 网路隔离 NetworkPolicy 网路策略 - 实质上也是iptables规则
    网络策略通过网络插件来实现,所以必须使用一种支持 NetworkPolicy 的网络方案(如 calico)—— 非 Controller 创建的资源,是不起作用的。

  • 容器隔离
    5种隔离机制

    • Mount Namespace 隔离
    • PID Namespace 隔离
    • Network Namespace 隔离
    • IPC Namespace 隔离
    • UTS Namespace 隔离
      4个打破隔离的机制 
         - spec.hostNetwork
         - spec.volumes
         - spec.shareProcessNamespace
         - spec.containers[].securityContext.privileged
4. 配额 #

ResourceQuota

5. 开源方案 #

kiosk
Set up soft multi-tenancy with Kiosk on Amazon Elastic Kubernetes Service

参考: #

  1. Kubernetes 多租户简介
    https://static.sched.com/hosted_files/kccnceu19/74/kubecon-eu-multitenancy-wg-deepdive.pdf
    官方 https://github.com/kubernetes-sigs/multi-tenancy

  2. 解决 K8s 落地难题的方法论提炼

  3. NetworkPolicy jimmysong

  4. 轻量级 Kubernetes 多租户方案的探索与实践 火山引擎云原生
    本质上来说 KubeZoo 的方案和 Virtual Cluster 有点类似,是一种 Serverless 的 Kubernetes 方案。

  5. KubeSphere 多租户与认证鉴权实践:使用 GitLab 账号登陆 KubeSphere