Kubernetes Namespaces _ Kubernetes(K8S)中文文档_Kubernetes中文社区 Kubernetes 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支持的格式有很多,比较常见的是wide、json、yam
$ kubectl get ns default -o yaml
本文探讨了Kubernetes中的Namespaces如何实现资源隔离,包括删除Namespace时的影响,default和kube-system命名空间的特殊性,PersistentVolumes与PersistentVolumeClaims的关系,以及Events与Namespaces的关联。

910

被折叠的 条评论
为什么被折叠?



