文档首页 > > 用户指南> 集群管理> 命名空间

命名空间

分享
更新时间: 2020/01/22 GMT+08:00

命名空间Namespace)是对一组资源和对象的抽象整合。在同一个集群内可创建不同的命名空间,不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务,也能够互不干扰。

例如可以将开发环境、测试环境的业务分别放在不同的命名空间。

准备工作

至少已创建一个集群,请参见购买混合集群

使用约束

每个命名空间下,创建的服务数量不能超过6000个。此处的服务对应kubernetes的service资源,即工作负载所添加的服务。

命名空间类别

命名空间按创建类型分为两大类:集群默认创建的、用户创建的。

  • 集群默认创建的:集群在启动时会默认创建defaultkube-publickube-system命名空间。
    • default:在不指定命名空间时使用。
    • kube-public:用来部署公共插件、容器模板等。
    • kube-system:部署kubernetes系统组件。
  • 用户创建的:用户可以按照需要创建命名空间,例如开发环境、联调环境和测试环境分别创建对应的命名空间。或者按照不同的业务创建对应的命名空间,例如系统若分为登录和游戏服务,可以分别创建对应命名空间。

创建命名空间

  1. 登录CCE控制台,在左侧导航栏中选择“资源管理 > 命名空间。单击“创建命名空间”。
  2. 参照表1设置命名空间参数,其中带“*”标志的参数为必填参数。

    表1 命名空间基本信息

    参数

    参数说明

    * 命名空间

    新建命名空间的名称,命名必须唯一。

    * 集群

    新建命名空间属于哪个集群。

    节点亲和

    开启后,当前命名空间下所创建的工作负载只能调度到拥有特定标签的节点上。您可以在节点管理中通过标签管理为节点添加标签。

    该参数仅在v1.13.10-r0及以上版本的集群中显示。

    命名空间描述

    输入对命名空间的描述信息。

    资源配额设置

    单击后可对资源进行设置,用于限制命名空间下资源的使用量,进而支持以命名空间为粒度的资源划分。

    须知:

    建议根据需要在命名空间中设置资源配额,避免因资源过载导致集群或节点异常。

    例如:在集群中每个节点可以创建的实例(Pod)数默认为110个,如果您创建的是50节点规格的集群,则最多可以创建5500个实例。因此,您可以在命名空间中自行设置资源配额以确保所有命名空间内的实例总数不超过5500个,以避免资源过载。

    可设置配额的资源类型如下:

    • CPU(Core)
    • 内存(MiB)
    • 有状态工作负载(StatefulSet)
    • 无状态工作负载(Deployment)
    • 普通任务(Job)
    • 定时任务(CronJob)
    • 实例(Pod)
    • 服务(Service)

    请输入整型数值,"0"表示不限制该资源的使用。

    若您需要限制CPU或内存的配额,则创建工作负载时必须指定CPU或内存请求值。

  3. 配置完成后,单击“确定”。

使用命名空间

  1. 创建工作负载时,选择对应的命名空间。
  2. 查询工作负载时,选择对应的命名空间,查看对应命名空间下的所有工作负载。

命名空间使用实践

  • 按照不同环境划分命名空间

    一般情况下,工作负载发布会经历开发环境、联调环境、测试环境,最后到生产环境的过程。这个过程中不同环境部署的工作负载相同,只是在逻辑上进行了定义。分为两种做法:

    • 分别创建不同集群。

      不同集群之间,资源不能共享。同时,不同环境中的服务互访需要通过负载均衡才能实现。

    • 不同环境创建对应命名空间。

      同个命名空间下,通过服务名称(Service name)可直接访问。跨命名空间的可以通过服务名称、命名空间名称访问。

      例如下图,开发环境/联调环境/测试环境分别创建了命名空间。

      图1 不同环境创建对应命名空间
  • 按照应用划分命名空间

    对于同个环境中,应用数量较多的情况,建议进一步按照工作负载类型划分命名空间。例如下图中,按照APP1和APP2划分不同命名空间,将不同工作负载在逻辑上当做一个工作负载组进行管理。且同一个命名空间内的工作负载可以通过服务名称访问,不同命名空间下的通过服务名称、命名空间名称访问。

    图2 按照工作负载划分命名空间

设置命名空间级的网络策略

您可以通过网络隔离开关,设置命名空间层面的网络策略。

例如命名空间default,网络隔离的默认状态为“隔离状态未开启”,表示“当前集群下的所有工作负载”都可以访问“命名空间default下的工作负载”

若您需要设置其它工作负载不可以访问“命名空间default下的工作负载”,请参照以下步骤设置:

网络模型为“VPC网络”时不支持命名空间(namespace)的网络隔离,仅在“容器隧道网络”模式下支持。

  1. 登录为CCE控制台,在左侧导航栏中选择“资源管理 > 命名空间”
  2. 在待设置命名空间(例如default)后,将网络隔离一栏的“隔离状态未开启”改为“隔离状态已开启”,开启后,当前集群内的其他工作负载都不能访问此命名空间下的工作负载。

    设置完成后,当前集群内其它命名空间下的工作负载都不能访问default下的工作负载。

    图3 命名空间网络策略

设置命名空间级别的资源配额

通过设置命名空间级别的资源配额,实现多团队或多用户在共享集群资源的情况下限制团队、用户可以使用的资源总量,包括限制命名空间下创建某一类型对象的数量以及对象消耗计算资源(CPU、内存)的总量。

集群为1.9及以上版本时,才支持此功能。

  1. 登录CCE控制台,在左侧导航栏中选择“资源管理 > 命名空间”。
  2. 单击对应命名空间后的“配额管理”,单击“编辑配额”。

    系统级别的命名空间kube-system、kube-public默认不支持设置资源配额。

  3. 设置资源配额,单击“确定”。

    • CPU(Core):限制命名空间下工作负载实例(Pod)能申请CPU资源的最大值。单位为“核”。
    • 内存(MiB):限制命名空间下工作负载实例能申请内存资源的最大值。单位为MiB。
    • 有状态工作负载(StatefulSet):限制命名空间下能创建有状态负载的最大数量。
    • 无状态工作负载(Deployment):限制命名空间下能创建无状态负载的最大数量。
    • 普通任务(Job):限制命名空间下能创建普通任务的最大数量。
    • 定时任务(CronJob):限制命名空间下能创建定时任务的最大数量。
    • 实例(Pod):限制命名空间下能创建实例的最大数量。
    • 服务(Service):限制命名空间下能创建服务的最大数量。
    • 命名空间设置了CPU或内存资源配额后,创建工作负载时,必须指定CPU或内存的请求值(request)和约束值(limit),否则CCE将拒绝创建实例。若设置资源配额值为0,则不限制该资源的使用。
    • 配额累计使用量包含CCE系统默认创建的资源,如default命名空间下系统默认创建的kubernetes服务(该服务可通过后端kubectl工具查看)等,故建议命名空间下的资源配额略大于实际期望值以去除系统默认创建资源的影响。

删除命名空间

删除命名空间会删除该命名空间下所有的资源(如工作负载,短任务、配置项等),请谨慎操作。

  1. 登录CCE控制台,在左侧导航栏中选择“ 资源管理 > 命名空间”。
  2. 在“集群”下拉框中,选择命名空间所在的集群。
  3. 选中待删除的命名空间,单击“删除”

    根据系统提示进行删除操作。系统内置的命名空间不支持删除。

分享:

    相关文档

    相关产品

文档是否有解决您的问题?

提交成功!

非常感谢您的反馈,我们会继续努力做到更好!

反馈提交失败,请稍后再试!

*必选

请至少选择或填写一项反馈信息

字符长度不能超过200

提交反馈 取消

如您有其它疑问,您也可以通过华为云社区问答频道来与我们联系探讨

跳转到云社区