jk's notes
  • 命名空间

命名空间

命名空间是一种资源隔离机制 (与传统命名空间的概念一样).

  • 可以在一个集群中划分多个资源实现隔离
  • 并可以在集群中按照用户进行划分资源

例如可以创建: 开发, 测试, 生产 等多个命名空间.

命名空间内的资源命名必须唯一. 不同命名空间下允许重名.

命名空间作用于带有名字的对象, 例如 Service, Deployment 等.

查看命名空间

可以使用

kubectl get namespace

image-20230730004838671

这是系统默认的命名空间.

  • default 默认命名空间, 不允许删除. 未指定命名空间的对象均置于此.
  • kube-system 表示 Kubernetes 系统对象所使用的命名空间. 涉及到控制平面与组件.
  • kube-public 自动创建的公共命名空间. 专门用于放置公共的数据, 无访问限制的资源.
  • kube-node-lease 租约 (lease) 对象使用的命名空间. 每一个节点都有一个租约对象, 它是一种轻量级资源, 它通过心跳来检查节点是否出现故障.
kubectl get lease -A # 查看 lease 对象

image-20230730123544190

默认不指定 -A 或不指定 --namespace=命名空间 都是查询 default 命名空间下的对象.

-n 是 --namespace 的简写.

创建命名空间

使用命令

kubectl create ns 命名空间名
# ns 是 namespace 的简写

image-20230730124000640

指定命名空间

  • 可以创建对象时使用 -n 来指定命名空间
  • 也可以使用 config 命令来重置对象的命名空间

image-20230730124312290

如果命名空间不存在会报错. 设置之前应先创建命名空间.

指定上下文默认的命名空间

默认情况下, 上下文使用 default 命名空间, 也就是说不指定时默认会将创建的内容挂到 default 命名空间下.

查看可以使用

kubectl config current-context

要修改可以使用:

kubectl config set-context $(kubectl config current-context) --namespace=新命名空间

删除命名空间

删除命名空间会自动删除其下的对象. 若出现资源占用, 或错误无法删除这些对象时, 命名空间不会被删除.

使用命令:

kubectl delete namespace <命名空间名>

image-20230730124930848

Last Updated:
Contributors: jk