namespace

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

默认情况下,kubernetes集群中所有的Pod都是可以相互访问的,但是在实际过程中,可能不想让两个Pod之间进行相互的访问,那么此时就可以将两个Pod划分到不同的namespace下。kubenetes通过将集群内部的资源分配到不同的Namespace中,形成逻辑上的“组”,以便于不同资源的组进行隔离和管理。

可以通过kubernetes的授权机制,将不同的namespace交给不同的租户进行管理,这样就形成多租户的资源隔离。此时还能结合kubernetes的资源配额机制,限定不同租户能占用的资源,如cpu使用量,内存使用量等,来实现租户可用资源的管理

kubernetes在集群启动后,会默认创建几个namespace

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

 

操作方式

# 查看所有的ns 
[root@master ~]# kubectl get ns
NAME              STATUS   AGE
default           Active   40h
kube-node-lease   Active   40h
kube-public       Active   40h
kube-system       Active   40h


# 查看指定的ns
[root@master ~]# kubectl get ns kube-system
NAME          STATUS   AGE
kube-system   Active   40h
[root@master ~]# kubectl get ns default
NAME      STATUS   AGE
default   Active   40h


# 指定输出格式 kubectl get ns ns名称 -o [json/wide/yaml]
[root@master ~]# kubectl get ns default -o yaml
apiVersion: v1
kind: Namespace
metadata:
  creationTimestamp: "2021-09-25T14:37:46Z"
  name: default
  resourceVersion: "146"
  selfLink: /api/v1/namespaces/default
  uid: 924536fd-013d-4f5b-8f2b-2d4abc179ca5
spec:
  finalizers:
  - kubernetes
status:
  phase: Active

# 创建namespace
kubectl create ns dev

# 删除namespace
kubectl delete ns dev

 

以配置文件的方式创建一个namespace

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

apiVersion: v1
kind: Namespace
metadata:
  name: dev

 

然后就可以执行对应的创建和删除命令了

创建: kubectl create -f ns-dev.yml

删除: kubectl delete -f ns-dev.yml

 

posted @ 2021-11-04 18:29  第七爻  阅读(188)  评论(0编辑  收藏  举报