# 创建命名空间
#### 操作场景
命名空间（Namespace）是对一组资源和对象的抽象整合。在同一个集群内可创建不同的命名空间，不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务，也能够互不干扰。
例如可以将开发环境、测试环境的业务分别放在不同的命名空间。
#### 前提条件
至少已创建一个集群。
#### 约束与限制
每个命名空间下，创建的服务数量不能超过6000个。此处的服务对应kubernetes的service资源，即工作负载所添加的服务。
#### 命名空间类别
命名空间按创建类型可分为以下几类：
- 集群默认创建的命名空间：集群在启动时会默认创建default、kube-public、kube-system、kube-node-lease命名空间。
  - default：所有未指定Namespace的对象都会被分配在default命名空间。
  
  - kube-public：此命名空间下的资源可以被所有人访问（包括未认证用户），使集群中的某些资源可以在整个集群范围内可见可读。 该命名空间为Kubernetes预留的命名空间，其公共属性只是一种约定而并非要求。
  
  - kube-system：所有由Kubernetes系统创建的资源都处于这个命名空间。
  
  - kube-node-lease：每个节点在该命名空间中都有一个关联的"Lease"对象，该对象由节点定期更新。NodeStatus和NodeLease都被视为来自节点的心跳，在v1.13之前的版本中，节点的心跳只有NodeStatus，NodeLease特性从v1.13开始引入。NodeLease比NodeStatus更轻量级，该特性在集群规模扩展性和性能上有明显提升。
   
- 用户创建的命名空间：用户可以按照需要创建命名空间，例如开发环境、联调环境和测试环境分别创建对应的命名空间。或者按照不同的业务创建对应的命名空间，例如系统若分为登录和游戏服务，可以分别创建对应命名空间。
- 服务网格命名空间：使用ASM服务时将自动创建名为istio-system、asm-system、istio-operator、mantis-system的命名空间。这些命名空间不支持进行配额管理。如果您手动创建名称相同的命名空间，这些命名空间也将会受到该限制。
 
#### 使用控制台创建命名空间
1. 登录[CCE控制台](https://console.huaweicloud.com/cce2.0/?#/cce/cluster/list)，单击集群名称进入集群。
2. 在左侧导航栏中选择"命名空间"，在右上角单击"创建命名空间"。
3. 参照[表1]设置命名空间参数。
   
    表1命名空间基本信息 
   | 参数    | 参数说明                                                                                                                                                                                                                                                                                                                                           |
   |:---|:---|
   | 名称   | 新建命名空间的名称，命名必须唯一。                                                                                                                                                                                                                                                                                                                              |
   | 描述  | 输入对命名空间的描述信息。                                                                                                                                                                                                                                                                                                                                   |
   | 配额管理 | 资源配额可以限制命名空间下的资源使用，进而支持以命名空间为粒度的资源划分。 须知： **您可以根据需要在命名空间中设置资源配额，避免因资源过载导致集群或节点异常。** 例如，如果您的集群资源有限，但需要使用多个命名空间来隔离不同业务的资源，为了确保集群稳定和资源合理分配，您可以为每个命名空间设置资源配额。 请输入数值，不输入表示不限制该资源的使用。 若您需要限制CPU或内存的配额，则创建工作负载时必须指定CPU或内存请求值。 |
      
   
   
4. 配置完成后，单击"确定"。
 
#### 使用kubectl命令创建命名空间
1. 使用kubectl连接集群，详情请参见[通过kubectl连接集群](https://support.huaweicloud.com/usermanual-cce/cce_10_0107.html)。
2. 您可以使用以下方式创建命名空间。 
   - 方式一：通过YAML文件定义命名空间配置，然后通过**kubectl apply** 命令创建命名空间。
     1. 创建一个名为custom-namespace.yaml的文件，内容如下：
        ```
        apiVersion: v1 
        kind: Namespace 
        metadata: 
          name: custom-namespace
        ```
        
     
     2. 使用以下kubectl命令创建命名空间。
        ```
        kubectl apply -f custom-namespace.yaml
        ```
        回显如下：
        ```
        namespace/custom-namespace created
        ```
        
      
   
   - 方式二：使用**kubectl create namespace** 命令创建。
     ```
     kubectl create namespace custom-namespace
     ```
     
   
   
   
   
3. 创建命名空间后，可以使用以下命令来验证命名空间是否创建成功。 
   ```
   kubectl get namespaces
   ```
   您应该会看到custom-namespace命名空间出现在列表中。
   更多关于命名空间的配置，请参见[管理命名空间的内存、CPU和API资源](https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/manage-resources/)。
   
   
 
