NameSpace
名称空间,用来对集群资源进行隔离划分。默认只隔离资源,不隔离网络。每个Kubernetes资源只能在一个名称空间中,Kubernetes名称空间支持不同的项目、团队或客户去使用Kubernetes集群。
说明
对于生产集群,请考虑不要使用default名称空间,而是创建其他名称空间来使用。
在Dashboard页面中,可以查看名称空间:
1. 自带名称空间
Kubernetes启动时会创建四个初始名称空间:
- default:主要便于你无需创建新的名称空间即可开始使用新集群。
- kube-node-lease:该名称空间包含用于与各个节点关联的Lease(租约)对象。 节点租约允许kubelet发送心跳, 由此控制面能够检测到节点故障。
- kube-public:该名称空间主要预留为集群使用,以便某些资源需要在整个集群中可见可读。
- kube-system:该名称空间用于Kubernetes系统创建的对象。
2. 查看名称空间
- 查看名称空间列表
sh
[root@node101 ~]# kubectl get namespace
NAME STATUS AGE
default Active 12d
kube-node-lease Active 12d
kube-public Active 12d
kube-system Active 12d
kubernetes-dashboard Active 3d21h
## 或者使用简写形式
[root@node101 ~]# kubectl get ns
NAME STATUS AGE
default Active 12d
kube-node-lease Active 12d
kube-public Active 12d
kube-system Active 12d
kubernetes-dashboard Active 3d21h
- 查看名称空间详情
sh
[root@node101 ~]# kubectl describe ns kube-system
Name: kube-system
Labels: kubernetes.io/metadata.name=kube-system
Annotations: <none>
Status: Active
No resource quota.
No LimitRange resource.
名称空间可以处于下列两个阶段中的一个:
- Active:名称空间正在被使用中。
- Terminating:名字空间正在被删除,且不能被用于新对象。
3. 创建名称空间
通过命令或者YAML文件方式都可以创建名称空间。
- 使用命令方式创建
sh
[root@node101 ~]# kubectl create namespace hello-dev
namespace/hello-dev created
- 使用YAML方式创建
创建hello-test.yml文件,内容如下:
yml
apiVersion: v1
kind: Namespace
metadata:
name: hello-test
执行命令:
sh
[root@node101 ~]# kubectl create -f hello-test.yml
namespace/hello-test created
[root@node101 ~]# kubectl get ns
NAME STATUS AGE
default Active 12d
hello-dev Active 7m58s
hello-test Active 18s
kube-node-lease Active 12d
kube-public Active 12d
kube-system Active 12d
kubernetes-dashboard Active 3d22h
4. 删除名称空间
删除名称空间会删除名称空间下的所有内容, 删除操作是异步的,所以该开始你会看到名称空间处于Terminating状态。
sh
## k8s自带的名称空间都不能随便删除
[root@node101 ~]# kubectl delete ns default
Error from server (Forbidden): namespaces "default" is forbidden: this namespace may not be deleted
[root@node101 ~]# kubectl delete ns hello-dev hello-test
namespace "hello-dev" deleted
namespace "hello-test" deleted