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

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM