命名空间
命名空间是一种资源隔离机制 (与传统命名空间的概念一样).
- 可以在一个集群中划分多个资源实现隔离
- 并可以在集群中按照用户进行划分资源
例如可以创建: 开发, 测试, 生产 等多个命名空间.
命名空间内的资源命名必须唯一. 不同命名空间下允许重名.
命名空间作用于带有名字的对象, 例如 Service
, Deployment
等.
查看命名空间
可以使用
kubectl get namespace
这是系统默认的命名空间.
default
默认命名空间, 不允许删除. 未指定命名空间的对象均置于此.kube-system
表示Kubernetes
系统对象所使用的命名空间. 涉及到控制平面与组件.kube-public
自动创建的公共命名空间. 专门用于放置公共的数据, 无访问限制的资源.kube-node-lease
租约 (lease) 对象使用的命名空间. 每一个节点都有一个租约对象, 它是一种轻量级资源, 它通过心跳来检查节点是否出现故障.
kubectl get lease -A # 查看 lease 对象
默认不指定 -A
或不指定 --namespace=命名空间
都是查询 default
命名空间下的对象.
-n
是--namespace
的简写.
创建命名空间
使用命令
kubectl create ns 命名空间名
# ns 是 namespace 的简写
指定命名空间
- 可以创建对象时使用
-n
来指定命名空间 - 也可以使用
config
命令来重置对象的命名空间
如果命名空间不存在会报错. 设置之前应先创建命名空间.
指定上下文默认的命名空间
默认情况下, 上下文使用 default
命名空间, 也就是说不指定时默认会将创建的内容挂到 default
命名空间下.
查看可以使用
kubectl config current-context
要修改可以使用:
kubectl config set-context $(kubectl config current-context) --namespace=新命名空间
删除命名空间
删除命名空间会自动删除其下的对象. 若出现资源占用, 或错误无法删除这些对象时, 命名空间不会被删除.
使用命令:
kubectl delete namespace <命名空间名>