8、k8s-资源-Namespace-空间隔离
Namespace是kubernetes系统中一种非常重要的资源、它主要的作用是用来实现多套环境的资源隔离或者多租户的资源隔离。
默认情况下、kubernetes集群中的所有Pod都是可以互相访问的、但是在实际生产环境中、 是不能让两个Pod之间进行互相访问的、这时候就可以将两个Pod划分到不同的namespace空间下、kubernetes通过将集群内部的资源分配到不同的namespace中、可以形成逻辑上的 组 、以方便不同的组的资源进行隔离使用和管理。
可以通过kubernetes的授权机制、将不同的namespace交给不同用户进行管理、这样就实现了多租户的资源隔离、此时还能结合kubernetes的资源配置额机制、限定不同租户能占用的资源、例如CPU的使用量、内存的使用量等、来实现租户可用资源的管理。
注意:在kubernetes在集群启动之后、会默认创建几个namespace的
#默认创建的namespace
[root@master0 ~]# kubectl get ns NAME STATUS AGE default Active 24h #所有未指定namespace的对象都会被分配到以default命名的空间 kube-node-lease Active 24h #集群节点之间的心跳维护、v1.13开始引入 kube-public Active 24h #此命名空间下的资源可以被所有人访问(包括未认证的用户) kube-system Active 24h #所有有kubernetes系统创建的资源都处于这个命名的空间
namespace的增删查:
查: 1、查看namespace:kubectl get ns 2、查看某个namespace的详细信息:kubectl describe ns defulault(namespace名) ========================================== Name: default Labels: <none> Annotations: <none> Status: Active #Active 命名空间正在使用中 、 Terminating 正在删除命名空间 No resource quota. #针对namespace做的资源限制 No LimitRange resource. #针对namespace中的每个组件做的资源限制 ========================================== 创建(增): kubectl create ns dex 删: kubectl delete ns dex
使用yaml配置文件来配置namespace:
vim namespace.yaml ======================== apiVersion: v1 kind: Namespace metadata: name: dex ======================= 1、创建:kubectl create -f namespace.yaml 2、删除: kubectl delete -f namespace.yaml