k8s之namespace

namespace介绍

namespace是k8s系统中的一种非常重要的资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离

默认情况下,k8s集群中的所有的pod都是可以相互访问的。但是在实际中,可能不想让两个pod之间进行互相的访问,

哪此时就可以将两个pod划分到不同的namespace下。k8s将通过将集群内部的资源分配到不同的namespace中,可以形成逻辑上的”组“,

以方便不同的组的资源进行隔离使用和管理

可以通过k8s的授权机制,将不同的namespace交给不同租户进行管理,这样就实现了多租户的资源隔离。

此时还能结合k8s的资源配额机制,限定不同租户能占用的资源,例如cpu使用量,内存使用量等,来实现租户可用资源的管理

 

k8s集群启动之后,默认会创建几个namespace

[root@master ~]# kubectl get namespace
NAME              STATUS   AGE
default           Active   41h  #所有未指定namespace的对象都会被分配在default命名空间
kube-node-lease   Active   41h  #集群节点之间的心跳维护,v1.13开始引入
kube-public       Active   41h  #此命名空间下的资源可以被所有人访问(包括未认证用户)
kube-system       Active   41h  #所有由k8s系统创建的资源都处于这个命名空间

 

namespace资源的具体操作

查看

查看所有的ns

[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   41h
kube-node-lease   Active   41h
kube-public       Active   41h
kube-system       Active   41h

查看指定的ns

#命令:kubectl get ns ns名称 -o 格式参数
#k8s支持的格式很多,比较常见的是wide、json、yaml
[root@master ~]# kubectl get ns default -o yaml apiVersion: v1 kind: Namespace metadata: creationTimestamp: "2021-06-30T09:42:21Z" name: default resourceVersion: "174" selfLink: /api/v1/namespaces/default uid: 111a15fb-6387-4879-aa7a-82c2a5f0dcc7 spec: finalizers: - kubernetes status: phase: Active

查看ns详情

#命令 kubectl describe ns ns名称
[root@master ~]# kubectl describe ns default
Name:         default
Labels:       <none>
Annotations:  <none>
Status:       Active #Active 命名空间正在使用中,Terminating 正在删除命名空间

#Resource quota 针对namespace做的资源限制
#LimitRange针对namespace的每个组件做的资源限制 No resource quota. No LimitRange resource.

创建

#创建namespace
[root@master ~]# kubectl create ns dev namespace/dev created

删除

[root@master ~]# kubectl delete ns dev
namespace "dev" deleted

配置方式

首先准备一个yaml文件:ns-dev.yaml

apiVersion: v1
kind: Namespace
metadata:
  name: dev
[root@master ~]# vim namespace-dev.yaml
[root@master ~]# kubectl create -f namespace-dev.yaml 
namespace/dev created
[root@master ~]# kubectl get ns dev
NAME   STATUS   AGE
dev    Active   66s
[root@master ~]# kubectl delete -f namespace-dev.yaml 
namespace "dev" deleted
[root@master ~]# kubectl get ns dev
Error from server (NotFound): namespaces "dev" not found

 

posted @ 2021-07-02 15:40  路过的柚子厨  阅读(3826)  评论(0编辑  收藏  举报