Namespace
Namespace是kubernetes系统中的一种非常重要资源,它的主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离
默认情况下kubernetes集群中的所有pod都是可以相互访问的。但是在实际中,可能不想让两个pod之间进行互相访问,那此时就可以将两个Pod划分到不同的namespace下。K8S通过将集群内部的资源分配到不同的Namesapce中,可以形成逻辑上的组,以方便不同的组的资源进行隔离使用和管理 。
可以通过kubernetes的授权机制,将不同的namespace交给不同租户(比如下图的dev给开发管理,test给测试组管理。)进行管理,这样实现了多租户的资源隔离,此时还能结合K8S的资源配合机制,限定不同租户能占用的资源,例如CPU使用量,内存使用量等,来实现租户可以用的资源管理。
namespace基本操作
#查看所有namespace
[root@master ~]# kubectl get namespace
NAME STATUS AGE
default Active 47h #所有未指定的pod、Namespace的对象都会被分配到default空间
kube-node-lease Active 47h #集群节点之间的心跳维护,v.13版本开始引入的
kube-public Active 47h #此命名空间瞎的资源 可以被所有人访问
kube-system Active 47h #K8S系统本身的组件就是在这里。可以查看一下
[root@master ~]# kubectl get pod -n kube-system
NAME READY STATUS RESTARTS AGE
coredns-6955765f44-4d2v6 0/1 Error 0 47h
coredns-6955765f44-647sx 0/1 Error 0 47h
etcd-master 1/1 Running 1 47h
kube-apiserver-master 1/1 Running 1 47h
kube-controller-manager-master 1/1 Running 1 47h
kube-proxy-dbwn7 1/1 Running 0 47h
kube-proxy-mmrfg 1/1 Running 1 47h
kube-proxy-nfvl9 1/1 Running 0 47h
kube-scheduler-master 1/1 Running 1 47h
#下面来看namespace资源的具体操作
#查看
# 1 查看所有的ns 命令:kubectl get ns
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 47h
kube-node-lease Active 47h
kube-public Active 47h
kube-system Active 47h
# 2查看指定的ns 命令:kubectl get ns ns名称
[root@master ~]# kubectl get ns kube-node-lease
NAME STATUS AGE
kube-node-lease Active 47h
# 3 查看ns详情 命令: kubectl describe ns ns名称
[root@master ~]# kubectl describe ns default
Name: default
Labels: <none>
Annotations: <none>
Status: Active #Active表示命名空间在使用中, Terminating 正在删除命名空间
#ResourceQuota 针对namespace做的资源限制
No resource quota.
#针对namespace中每个组件做的资源限制
No LimitRange resource.
#4 创建命名空间
[root@master ~]# kubectl create ns dev
namespace/dev created
[root@master ~]# kubectl get ns dev
NAME STATUS AGE
dev Active 5s
#5删除命名空间
[ro