适用场景

多团队共用一个集群,核心是"隔离":资源不能互相抢占、网络不能乱窜、权限不能越界。四件事缺一件都会出问题。

配置步骤(RBAC 与命名空间权限)

apiVersion: rbac.authorization.k8s.io/v1
kind: RoleBinding
metadata: { name: dev-team, namespace: team-a }
subjects: [{ kind: User, name: dev1, apiGroup: rbac.authorization.k8s.io }]
roleRef: { kind: ClusterRole, name: edit, apiGroup: rbac.authorization.k8s.io }

关键参数与建议

  • 命名空间:按团队/环境划分,禁止使用 default
  • RBAC:按命名空间授权,禁止随意 cluster-admin
  • 网络策略:默认拒绝跨命名空间,按需放通
  • 资源配额:ResourceQuota + LimitRange,防止单团队吃满
  • 审计与标签:资源必须有 owner 标签,便于计量与清理

容易踩的坑

  • 直接给 cluster-admin,越权风险大
  • 用 Group 管理成员,离职未移除导致权限遗留
  • 未限制 exec/port-forward,可进入他人容器

验证与巡检

kubectl auth can-i get pods --namespace=team-b --as=dev1
  • 巡检:无多余 cluster-admin 绑定、权限季度复核

小结

多租户的验收:模拟一个团队尝试越权(访问别的命名空间、抢资源、跨网访问),全部应被拒绝。

> 说明:文中命令为通用写法,不同型号/版本可能略有差异,落地前请对照设备实际版本的官方文档;带外管理与安全设备变更建议先在测试设备验证。