k8s 命名空间资源说明
最编程
2024-04-06 21:25:22
...
前言
环境:centos7.9 docker-ce-20.10.9 kubernetes-version v1.22.6
什么是namespace
namespace是kubernetes系统中的一种非常重要的资源,namespace的主要作用是用来实现多套环境的资源隔离,或者说是多租户的资源隔离。
默认情况下,k8s集群中所有pod都是可以相互访问的,但在实际环境中,可能不想让两个pod之间相互访问,那此时就可以将两个pod划分到不同的namespace下。k8s通过将集群内部的资源分配到不同的namespace中,可以形成逻辑上的隔离,以方便不同的资源进行隔离使用和管理。不同的命名空间可以存在同名的资源,命名空间为资源提供了一个作用域。
可以通过k8s的授权机制,将不同的namespace交给不同的租户进行管理,这样就实现了多租户的资源隔离,还可以结合k8s的资源配额机制,限定不同的租户能占用的资源,例如CPU使用量、内存使用量等等来实现租户可用资源的管理。
查看k8s系统中的namespace
namespace可以简写为ns,k8s创建之初默认会创建好几个namespace,下面查看k8s中的namespace:
[root@master ~]# kubectl get namespace #查看所有命名空间,namespace可以写成ns,即 kubectl get ns
NAME STATUS AGE
default ACTIVE 45h #所以未指定namespace的对象都被分配到default命名空间
kube-node-lease ACTIVE 45h #集群之间的心跳维护
kube-puble ACTIVE 45h #此命名空间下的所有资源可以被任何人访问,包含未认证用户
kube-system ACTIVE 45h #所有由k8s系统创建的资源都处于该命名空间
[root@master ~]# kubectl get namespace default #查看指定命名空间
创建资源对象时不指定命名空间,默认是default命名空间。
创建namespace
1、使用命令创建命名空间
[root@master ~]# kubectl create namespace dev
namespace 'dev' created
2、编写yaml文件创建命名空间
vim dev_namespace.yaml
apiVersion: v1
kind: NameSpace
metadata:
name: dev
[root@master ~]# kubectl create -f dev_namespace.yaml
namespace/dev created
删除namespace
[root@master ~]# kubectl delete namespace dev #删除dev命名空间,主要会删除该命名空间下的所有资源
namespace 'dev' deleted
[root@master ~]# kubectl delete -f dev_namespace.yaml #也可以通过指定yaml文件删除dev命名空间
namespace 'dev' deleted
查询资源时使用-n参数指定命名空间
查看某个资源时需要指定命名空间,否则默认在default命名空间查找。
[root@master ~]# kubectl get cronjob,pods -n kube-system #指定命名空间查找资源
[root@master ~]# kubectl get cronjob,pods --all-namespaces #在全部命名空间查找资源
总结
namespace可以实现资源的逻辑隔离,namespace简写为ns.
[root@master ~]# kubectl get namespace #查看所有命名空间
[root@master ~]# kubectl get ns #查看所有命名空间
[root@master ~]# kubectl create namespace dev #命令创建一个dev命名空间
[root@master ~]# vim dev_namespace.yaml #编写资源清单yaml文件创建一个命名空间
apiVersion: v1
kind: NameSpace
metadata:
name: dev
[root@master ~]# kubectl apply -f dev_namespace.yaml #应用上面的资源清单
[root@master ~]# kubectl delete namespace dev #删除dev命名空间,dev下的所有资源都会被删除
[root@master ~]# kubectl delete -f dev_namespace.yaml #通过资源清单文件来删除dev命名空间
[root@master ~]# kubectl get cronjob,pods -n kube-system #指定命名空间查找资源
[root@master ~]# kubectl get cronjob,pods --all-namespaces #在全部命名空间查找资源
上一篇: [空间资源隔离-群组
下一篇: 空间测量学习资源