- Namespace (命名空间)
- 创建 Namespace
- 删除 Namespace
- 查看 Namespace
最主要的功能就是用来进行资源的隔离。
默认情况下,Kubernetes 中所有的 Pod 都是可以互相访问的,但如果我们不想让某两个或者多个 Pod 之间进行相互访问,那么我们就可将这些 Pod 划分到不同的 Namespace 下面来实现对 Pod 的隔离(就像当是对这些 Pod 进行分组),方便我们对其 Namespace 下的资源进行使用和管理。
Namespace 为名称提供了一个范围,资源的 Names 在 Namespace 中具有唯一性。
创建 Namespace创建 ns 有两种方法:
- 直接使用命令创建
$ kubectl create namespace namespace名称 eg:创建一个名为 xxx 的ns $ kubectl create ns xxx namespace 'xxx' created
- 通过 yaml 文件创建
- a. 编辑 yaml 文件
$ cat my-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: xxx # 此处 xxx 即为 ns 名称
- b.创建 ns
$ kubectl create -f ./my-namespace.yaml namespace/xxx created
注意:命名空间名称满足正则表达式[a-z0-9]([-a-z0-9]*[a-z0-9])?,最大长度为63位
删除 Namespace删除ns 有两种方法:
- 直接使用命令删除
$ kubectl delete namespaces namespace名称 eg:删除一个名为 xxx 的ns $ kubectl delete ns xxx namespace 'xxx' delete
- 通过 yaml 文件删除
- a. 使用创建时的 yaml 文件
$ cat my-namespace.yaml apiVersion: v1 kind: Namespace metadata: name: xxx # 此处 xxx 即为 ns 名称
- b.删除 ns
$ kubectl delete -f ./my-namespace.yaml namespace/xxx delete
注意:
查看 Namespace
- 删除一个namespace会自动删除所有属于该namespace的资源。
- default和kube-system命名空间不可删除。
- PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的。
- Events是否属于namespace取决于产生events的对象.
# 查看 ns kubectl get ns # namespace 可以简写为 ns # 查询结果 NAME STATUS AGE default Active 3y78d # 默认的 Namespace,操作中若未指定 Namespace,则都为默认。 kube-node-lease Active 45h # 由 Kubernetes 节点发送的心跳有助于确定节点的可用性。 kube-public Active 45h # 自动创建,所有用户(包括未经过身份验证的用户)都可以读取。 kube-system Active 45h # Kubernetes 系统创建的对象的命名空间。 # 以上命名空间为 Kubernetes 再启动之后,默认创建的。
以 wide/yaml/json 文件的形式输出 Namespace 的详细信息
$ kubectl get ns namespace名称 -o wide/yaml/json
注:建议指定 ns 名称,若不指定则会输出所有 ns 的详细信息。



