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