Namespaces 是 Kubernetes 在同一个集群中进行逻辑环境划分的对象, 您可以通过 Namespaces 进行管理多个团队多个项目的划分。在 Namespaces 下,Kubernetes 对象的名称必须唯一。您可以通过资源配额进行可用资源的分配,还可以进行不同 Namespaces 网络的访问控制。
使用方法
通过控制台使用
容器服务控制台提供 Namespaces 的增删改查功能。操作步骤如下:
创建命名空间
1. 登录 容器服务控制台,选择左侧导航栏中的集群。
2. 在集群列表中单击集群 ID,进入集群详情页。
3. 选择命名空间,在命名空间页面单击新建。如下图所示:
4. 在新建命名空间页面,设置命名空间名称。如下图所示:
说明:
5. 单击创建Namespace。完成创建后,您可以在命名空间页面进行查看。
设置资源配额和限制
1. 在命名空间页面,单击目标命名空间右侧操作列的配额管理。
2. 在资源配额与限制中,您可快速设置计算资源限制、存储资源限制和其他资源限制。为命名空间配置资源配额,如下图所示:
3. 在编辑 LimitRange 中,您可快速设置默认资源限制。为该命名空间下的容器设置默认资源限制,如下图所示:
说明
对命名空间设置 CPU/内存 limit/request 配额后,创建工作负载时,必须指定 CPU/内存 limit/request,或为命名空间配置 LimitRange,更多请参见 ResourceQuotas。
4. 编辑完成后单击确定即可。
删除命名空间
1. 在命名空间页面,单击目标命名空间右侧操作列的删除。
2. 在删除资源弹窗中,确认资源信息,单击确定可删除对应的命名空间,且该命名空间下的资源对象也会被删除。
通过 Kubectl 使用
通过 ResourceQuota 设置 Namespaces 资源的使用配额
一个命名空间下可以拥有多个 ResourceQuota 资源,每个 ResourceQuota 可以设置每个 Namespace 资源的使用约束。可以设置 Namespaces 资源的使用约束如下:
计算资源的配额,例如 CPU、内存。
存储资源的配额,例如请求存储的总存储。
Kubernetes 对象的计数,例如 Deployment 个数配额。
不同的 Kubernetes 版本,ResourceQuota 支持的配额设置略有差异,更多详情可参见 Kubernetes ResourceQuota 官方文档。
ResourceQuota 的示例如下所示:
apiVersion: v1kind: ResourceQuotametadata:name: object-countsnamespace: defaultspec:hard:configmaps: "10" ## 最多10个 ConfigMapreplicationcontrollers: "20" ## 最多20个 replicationcontrollersecrets: "10" ## 最多10个 secretservices: "10" ## 最多10个 serviceservices.loadbalancers: "2" ## 最多2个 Loadbanlacer 模式的 servicecpu: "1000" ## 该 Namespaces 下最多使用1000个 CPU 的资源memory: 200Gi ## 该 Namespaces 下最多使用200Gi的内存
通过 NetWorkPolicy 设置 Namespaces 网络的访问控制
Network Policy 是 K8s 提供的一种资源,用于定义基于 Pod 的网络隔离策略。不仅可以限制 Namespaces, 还可以控制 Pod 与 Pod 之间的网络访问控制,即控制一组 Pod 是否可以与其它组 Pod,以及其它 network endpoints 进行通信。
在集群内部署 NetworkPolicy Controller,并通过 NetworkPolicy 实现 Namespaces 之间的网络控制的操作详情可参见 使用 Network Policy 进行网络访问控制。