Namespace(命名空间)
Namespace旨在用于这种环境:有许多的用户,这些用户分布在多个团队/项目中。对于只有几个或几十个用户的集群,您根本不需要创建或考虑使用Namespace。 当您需要使用Namespace提供的功能时,再考虑使用Namespace。
Namespace为Name(名称)提供了范围。在Namespace中,资源的名称必须唯一,但不能跨Namespace。
Namespace是一种在多种用途之间划分集群资源的方法(通过 resource quota )。
在未来的Kubernetes版本中,同一Namespace中的对象默认有相同的访问控制策略。
Namespace的创建和删除在 有描述。
可使用如下命令列出集群中当前的Namespace:
Kubernetes初始有两个Namespace:
- :对于没有其他Namespace的对象的默认Namespace
要临时设置请求的Namespace,可使用 标志。
可在上下文中永久保存所有后续kubectl
命令的Namespace。
当你创建 Service 时,会创建一个相应的 。此条目的形式为 ,这意味着如果容器只使用<service-name>
,则它将解析为Namespace本地的服务。 这对在多个Namespace(例如Development、Staging以及Production)中使用相同的配置的场景非常有用。 如果要跨越Namespace,请使用完全限定域名(FQDN)。
大多数Kubernetes资源(例如:Pod、Service、Replication Controllers等)都在某些Namespace中。但Namespace资源本身并不在Namespace中。低级资源(例如: nodes 和persistentVolumes)也不在任何Namespace中。事件是一个例外:它们可能有也可能没有Namespace,具体取决于事件的对象。