欢迎您访问 最编程 本站为您分享编程语言代码,编程技术文章!
您现在的位置是: 首页

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	#在全部命名空间查找资源