更新时间:2024-06-29 GMT+08:00
分享

命名空间

命名空间(Namespace)是对一组资源和对象的抽象整合。在同一个集群内可创建不同的命名空间,不同命名空间中的数据彼此隔离。使得它们既可以共享同一个集群的服务,也能够互不干扰。例如可以将开发环境、测试环境的业务分别放在不同的命名空间。

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

  • 集群默认创建:集群在启动时会默认创建default、kube-public、kube-system、kube-node-lease命名空间。
    • default:所有未指定Namespace的对象都会被分配在default命名空间。
    • kube-public:此命名空间下的资源可以被所有人访问(包括未认证用户),用来部署公共插件、容器模板等。
    • kube-system:所有由Kubernetes系统创建的资源都处于这个命名空间。
    • kube-node-lease:每个节点在该命名空间中都有一个关联的“Lease”对象,该对象由节点定期更新。NodeStatus和NodeLease都被视为来自节点的心跳,在v1.13之前的版本中,节点的心跳只有NodeStatus,NodeLease特性从v1.13开始引入。NodeLease比NodeStatus更轻量级,该特性在集群规模扩展性和性能上有明显提升。
  • 用户创建:用户可以按照需要创建命名空间,例如开发环境、联调环境和测试环境分别创建对应的命名空间。或者按照不同的业务创建对应的命名空间,例如系统若分为登录和游戏服务,可以分别创建对应命名空间。
    • 若创建的网格命名空间与舰队集群中的命名空间一致,则asm-mesh-controller插件会自动同步服务、服务实例到网格。
    • asm-mesh-controller插件在舰队集群接入网格时,会自动安装到集群asm-system系统命名空间下。该插件为网格系统插件,由舰队集群接入网格时自动安装,不支持在CCE插件市场手动安装。
    • asm-mesh-controller插件能力:
      • 负责网格实例的同步。舰队集群的服务实例创建、更新、删除都会自动同步到网格实例。
      • 负责网格服务的同步。舰队集群的服务创建会自动同步到网格,但是舰队集群的服务更新、删除不会自动同步到网格服务(除了新增服务端口外),需要在网格服务页面进行更新、删除。
      • 负责舰队集群pod的注入。
      • 负责网关实例pod、service的创建、删除、更新。

创建命名空间

通过控制台创建命名空间

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务中心”下的“命名空间”,进入命名空间列表页。
  4. 单击右上角“创建命名空间”。

    图1 创建命名空间

  5. 参照下表信息设置命名空间参数。

    参数

    参数说明

    名称

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

    描述

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

    标签

    为命名空间添加标签键值对

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

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

  6. 设置完成后,单击“确定”。

通过YAML创建命名空间

apiVersion: v1 
kind: Namespace                     # 创建服务类别为命名空间 
metadata: 
  name: weather                     # 命名空间名 
  annotations: 
    namespaceDesc: description 
labels: 
  app: forecast                     # 标签键值对 
  restartNamespacePod: false        # 重启服务关闭 
  istio-injection: disabled         # 注入数据面代理关闭

更新命名空间

控制台更新命名空间,操作步骤如下:

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务中心”下的“命名空间”,进入命名空间列表页。
  4. 单击命名空间列表右侧操作列下的“更新”,弹出“更新命名空间”对话框。
  5. 更新命名空间参数。

    表1 命名空间参数

    参数

    参数说明

    描述

    添加或修改描述。

    标签

    添加或删除标签键值对。

    注入数据面代理

    开启后,新创建的Pod会自动注入 istio-proxy sidecar,已存在的Pod需要配合重启服务才能生效注入istio-proxy sidecar。

    重启服务

    Sidecar自动注入开启时,将立即重启未注入sidecar的服务负载以注入sidecar;Sidecar自动注入关闭时,将立即重启已注入sidecar的服务负载以取消sidecar注入。

  6. 设置完成后,单击右下角“确定”。更新命名空间完成。

YAML编辑更新命名空间,操作步骤如下:

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务中心”下的“命名空间”,进入命名空间列表页。
  4. 单击命名空间列表右侧操作列下的“YAML编辑”,弹出YAML编辑界面。
  5. 更新标签、描述和是否注入数据面代理设置。
  6. 设置完成后,单击右下角“确定”。更新命名空间完成。

删除命名空间

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

  1. 登录UCS控制台,在左侧导航栏中单击“服务网格”。
  2. 单击服务网格名称,进入详情页。
  3. 在左侧导航栏,单击“服务中心”下的“命名空间”,进入命名空间列表页。
  4. 选中待删除的命名空间,单击“更多 >删除”。
  5. 弹出删除命名空间对话框,单击“是”,删除命名空间完成。

相关文档