名称空间的作用
主要作用是用来实现多套环境的资源隔离或者多租户的资源隔离;
租户的概念:买一个云服务器,我就是它的租户。
默认情况下kubenetes集群中的所有Pod都是可以相互访问的,但是实际环境中可能需要隔离不同的Pod,那此时就可以将不同的Pod划分到不同的Namespace下。
kubernetes通过将集群内部的资源分配到不同的Namespace中,可以形成逻辑上的“组”,以方便不同的组资源进行隔离使用和管理
可以通过kubernetes的授权机制,将不同的Namespace交给不同的租户进行管理,这样就实现了多租户的资源隔离。
记录工作中结合kubernetes的资源配额机制,限定不同的租户能占用的资源,例如CPU使用量、内存使用量等来实现租户可用资源的管理
就是即便某个pod发生资源泄露,也不能干涉到我的底层资源内存;cpu...
kubernetes在集群启动以后会默认创建几个Namespace。
#查看Namespace
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 5d17h
kube-node-lease Active 5d17h #集群节点之间的心跳维护,v1.13开始引入
kube-public Active 5d17h #该命名空间下的资源可以被所有人访问,包括未认证的用户
kube-system Active 5d17h #所有由kubernetes系统创建的资源都处于这个命名空间(这个在运行时候,需要查看这个下面的pod是否正常;正常才行)
#所有未指定的Namespace的对象都会被分配在default名称空间
#查看default空间下的pod资源
[root@master ~]# kubectl get pods -n default
NAME READY STATUS RESTARTS AGE
nginx-696649f6f9-t4xm6 1/1 Running 0 5d17h
#查看kube-system空间下的pod资源
[root@master ~]# kubectl get pods -n kube-system(系统创建的system空间)
NAME READY STATUS RESTARTS AGE
coredns-6955765f44-dzhkh 1/1 Running 0 5d17h
coredns-6955765f44-rn4ds 1/1 Running 0 5d17h
etcd-master 1/1 Running 0 5d17h
kube-apiserver-master 1/1 Running 0 5d17h
kube-controller-manager-master 1/1 Running 7 5d17h
kube-flannel-ds-2p922 1/1 Running 0 5d17h
kube-flannel-ds-fz8bz 1/1 Running 0 5d17h
kube-flannel-ds-plfvb 1/1 Running 0 5d17h
kube-proxy-7k4lf 1/1 Running 0 5d17h
kube-proxy-h485n 1/1 Running 0 5d17h
kube-proxy-m45qq 1/1 Running 0 5d17h
kube-scheduler-master 1/1 Running 5 5d17h
Namespace资源操作指令命令
查看命令
#查看所有Namespace信息
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 5d17h
kube-node-lease Active 5d17h
kube-public Active 5d17h
kube-system Active 5d17h
#查看指定Namespace信息
[root@master ~]# kubectl get ns default
NAME STATUS AGE
default Active 5d17h
#查看指定Namespace详细信息
[root@master ~]# kubectl describe ns default
Name: default
Labels: <none>
Annotations: <none>
Status: Active #Active表示命名空间正在使用,Terminatind表示正在删除命名空间
No resource quota. #针对于Namespace做的资源限制
No LimitRange resource. #针对于Namespace中的每个组件做的资源限制
工作中常常对此进行配置,限制底层硬件资源的获取。
创建命令
#创建Namespace
[root@master ~]# kubectl create ns dev
namespace/dev created
#查看指定Namespace
[root@master ~]# kubectl get ns dev
NAME STATUS AGE
dev Active 34s
删除命令
#删除指定Namespace
[root@master ~]# kubectl delete ns dev
namespace "dev" deleted
配置文件形式创建Namespace
#通过yml文件创建Namespace
[root@master ~]# vim ns_dev.yml
apiVersion: v1
kind: Namespace
metadata:
name: dev
#创建Namspace
[root@master ~]# kubectl create -f ns_dev.yml
#查看Namespace
[root@master ~]# kubectl get ns
NAME STATUS AGE
default Active 5d18h
dev Active 8s
kube-node-lease Active 5d18h
kube-public Active 5d18h
kube-system Active 5d18h
#删除Namespace
[root@master ~]# kubectl delete -f ns_dev.yml
namespace "dev" deleted
删除由yml文件配置的namespace; kubectl delete -f ns_dev.yml