kubernetes-命名空间

kubernetes-命名空间

概念

1
2
1、Namespace是对一组资源和对象的抽象集合。 常用来隔离不同的用户 比如Kubernetes自带的服务一般运行在 kube-system namespace中 默认创建的poddefault
2、命名空间将资源逻辑上分配到不同的namespace 可以是不同的项目,用户等区分管理,并设定控制策略,从而实现多租户。命令空间也称为虚拟集群。

参考文档

1
https://kubernetes.io/zh-cn/docs/tasks/administer-cluster/namespaces/

namespace 状态

1
2
Active(正常)
Terminating (删除)

查看集群所有的命名空间

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
[root@kubernetes-master study]# kubectl  get namespaces
NAME               STATUS   AGE
calico-apiserver   Active   4d18h
calico-system     Active   4d18h
default           Active   4d18h
kube-node-lease   Active   4d18h
kube-public       Active   4d18h
kube-system       Active   4d18h
tigera-operator   Active   4d18h

# 简写 ns等同于 namespaces
[root@kubernetes-master study]# kubectl get ns
NAME               STATUS   AGE
calico-apiserver   Active   4d18h
calico-system     Active   4d18h
default           Active   4d18h
kube-node-lease   Active   4d18h
kube-public       Active   4d18h
kube-system       Active   4d18h
tigera-operator   Active   4d18h

image-20231107093401296

创建命名空间

使用yaml文件方式创建

1
2
3
4
5
6
[root@kubernetes-master study]# mkdir  stady && cd stady
[root@kubernetes-master study]# cat namespaces.yaml  
apiVersion: v1 #yml版本默认v1
kind: Namespace #创建资源对象为namespace
metadata: #元数据
name: my-namespace #空间名称

image-20231107102824130

1
2
3
4
5
6
7
8
9
10
11
12
13
# 使用yaml文件方式创建
[root@kubernetes-master study]# kubectl apply -f namespaces.yaml
# 查看命名空间
[root@kubernetes-master study]# kubectl get ns
NAME               STATUS   AGE
calico-apiserver   Active   4d19h
calico-system     Active   4d19h
default           Active   4d19h
kube-node-lease   Active   4d19h
kube-public       Active   4d19h
kube-system       Active   4d19h
my-namespace       Active   7s
tigera-operator   Active   4d19h

image-20231107102910562

使用命令方式创建

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
[root@kubernetes-master study]# kubectl  create namespace  my-namespace-2
namespace/my-namespace-2 created
[root@kubernetes-master study]# kubectl get ns
NAME               STATUS   AGE
calico-apiserver   Active   4d19h
calico-system     Active   4d19h
default           Active   4d19h
kube-node-lease   Active   4d19h
kube-public       Active   4d19h
kube-system       Active   4d19h
my-namespace       Active   6m53s
my-namespace-2     Active   3s
tigera-operator   Active   4d19h
[root@kubernetes-master study]# kubectl describe namespaces my-namespace-2
Name:         my-namespace-2
Labels:       kubernetes.io/metadata.name=my-namespace-2
Annotations: <none>
Status:       Active

No resource quota.

No LimitRange resource.

image-20231107103633237

查看空间详情信息

1
2
3
4
5
6
7
8
9
[root@kubernetes-master study]# kubectl  describe  ns my-namespace
Name:         my-namespace
Labels:       kubernetes.io/metadata.name=my-namespace
Annotations: <none>
Status:       Active

No resource quota.

No LimitRange resource.

image-20231107103324373

删除命名空间

使用yaml文件方式删除

1
2
3
4
5
6
7
8
9
10
11
12
[root@kubernetes-master study]# kubectl  delete -f namespaces.yaml  
namespace "my-namespace" deleted
[root@kubernetes-master study]# kubectl get ns
NAME               STATUS   AGE
calico-apiserver   Active   4d19h
calico-system     Active   4d19h
default           Active   4d19h
kube-node-lease   Active   4d19h
kube-public       Active   4d19h
kube-system       Active   4d19h
my-namespace-2     Active   13m
tigera-operator   Active   4d19h

image-20231107104853498

使用命令行删除

1
2
3
4
5
6
7
8
9
[root@kubernetes-master study]# kubectl  get ns 
NAME STATUS AGE
calico-apiserver Active 4d19h
calico-system Active 4d19h
default Active 4d19h
kube-node-lease Active 4d19h
kube-public Active 4d19h
kube-system Active 4d19h
tigera-operator Active 4d19h