知行学院总结:如何解决 Kubernetes 的多租户难题( 四 )

一是租户之间的数据隔离,包括逻辑上的隔离和物理上的隔离。

K8S 中并没有租户这样的概念,但是提供了 namespace 作为基础的资源隔离单位,还提供了基于 RBAC 的权限管理方式,可以说只要是基于 K8S 的多租,都离不开 namespace,和 RBAC 这两个核心内容。

二是租户之间的网络隔离,虽然 K8S 提供了 NetworkPolicy 来限制不同 namespace 之间的网络通讯,但往往无法满足企业的使用需求,比如说带宽控制和流量监控。

三是权限控制,K8S 提供的 RBAC 只实现了 cluster、namespace 两个层级的权限管理。比如说 OpenShift,他们是这么做的,每个用户都在不同的 project 下,这个 project 实际上映射到 K8S 中就是一个 namespace,把 namespace 作为一个租户的边界,借助 K8S 的 RBAC 就可以实现租户的权限管理,我们在 KubeSphere 的社区版中也是这么做的,但是在一些客户的实际使用中我们发现,一个租户一个 namespace 往往不能满足他们的使用需求,我们需要面对非常复杂的人员组织架构。

四是多租户环境中的安全问题,网络隔离已经能在一定程度上保证集群的安全了,但在容器安全和节点安全上 K8S 做的还不够。

推荐阅读