12、k8s Namespaces 资源隔离

本文探讨了Kubernetes中的Namespaces如何实现资源隔离,包括删除Namespace时的影响,default和kube-system命名空间的特殊性,PersistentVolumes与PersistentVolumeClaims的关系,以及Events与Namespaces的关联。
实现资源隔离和配额的隔离,比如下面的信息:

所有对象都在Namespace中?
    大多数Kubernetes资源(例如pod、services、replication controllers或其他)都在某些Namespace中,但 Namespace资源本身并不在Namespace中。而低级别资源(如Node和persistentVolumes)不在任何Namespace中。Events是一个例外:它们可能有也可能没有Namespace,具体取决于Events的对象。
    可以使用下面命令查看哪些 Kubernetes 资源在命名空间中,哪些不在命名空间中:
kubectl api-resources --namespaced=true  # 查看哪些资源在命令空间
kubectl api-resources --namespaced=false  # 查看哪些资源不在命令空间
   
一、使用Namespaces
Namespace的创建、删除和查看:
1.1、创建   
命名空间名称满足正则表达式[a-z0-9]([-a-z0-9]*[a-z0-9])?,最大长度为63位
(1) 命令行直接创建
$ kubectl create namespace new-namespace
  
(2) 通过文件创建
$ cat my-namespace.yaml
apiVersion: v1
kind: Namespace
metadata:
  name: new-namespace
$ kubectl create -f ./my-namespace.yaml
 
1.2、删除
$ kubectl delete namespace new-namespace
注意:
  • 删除一个namespace会自动删除所有属于该namespace的资源;
  • default与kube-system命名空间可删除;
  • PersistentVolumes是不属于任何namespace的,但PersistentVolumeClaim是属于某个特定namespace的;
  • Events是否属于namespace取决于产生event的对象。
    
1.3、查看
$ kubectl get namespaces
Kubernetes 会创建三个初始命名空间:
  • default 没有指明使用其它命名空间的对象所使用的默认命名空间
  • kube-system 系统创建对象所使用的命名空间
  • kube-public 这个命名空间是自动创建的,所有用户(包括未经过身份验证的用户)都可以读取它。这个命名空间主要用于集群使用,以防某些资源在整个集群中应该是可见和可读的。这个命名空间的公共方面只是一种约定,而不是要求。
    
1.4、切换命名空间
$ kubectl config set-context --current --namespace=kube-system  # 切换至kube-system的命名空间
   
1.5、指定输出格式  命令:kubectl get ns ns名称 -o 格式参数
# kubernetes支持的格式有很多,比较常见的是widejsonyam
$ kubectl get ns default -o yaml
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值