Kubernetes的Namespace通过以下机制实现多租户资源隔离:
-
资源配额(ResourceQuota):限制Namespace内Pod/Service的CPU、内存、存储资源总量,防止资源抢占。实践中需结合业务负载动态调整,例如电商大促时临时提升配额,但需注意软/硬限制的平衡。
-
网络隔离(NetworkPolicy):通过Calico或Cilium的策略限制跨Namespace通信。曾遇到监控组件需要穿透隔离的场景,最终采用白名单机制开放特定CIDR段。
-
存储隔离:动态存储供应时绑定Namespace,但需注意StorageClass的回收策略。某次因Retain策略导致PV残留,开发了自动化清理工具。
-
RBAC权限控制:结合AD域账号实现细粒度授权,但服务账号的跨Namespace调用曾导致权限泄露,后引入OPA策略校验。
挑战案例:
- 共享集群核心组件(如Ingress Controller)时,租户配置冲突导致服务中断,最终通过Namespace级别的Annotation标记和控制器过滤解决
- HPA自动扩缩与ResourceQuota的冲突,需在Quota中预留弹性缓冲空间
- 租户级日志采集的索引污染问题,通过Fluentd的Namespace标签路由到不同Elasticsearch索引解决
最佳实践:建议为每个租户分配独立Namespace,结合Gatekeeper实现资源规范检查,并通过vCluster进行物理资源池的二级隔离。