kubernetes之Namespace详解-阿里云开发者社区

开发者社区> 云原生> 正文

kubernetes之Namespace详解

简介: Namespace Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。

Namespace

Namespace是对一组资源和对象的抽象集合,比如可以用来将系统内部的对象划分为不同的项目组或用户组。常见的pods, services, replication controllers和deployments等都是属于某一个namespace的(默认是default),而node, persistentVolumes等则不属于任何namespace。

Namespace常用来隔离不同的用户,比如Kubernetes自带的服务一般运行在kube-system namespace中

何时使用多个Namespaces
当团队或项目中具有许多用户时,可以考虑使用Namespace来区分,如果是少量用户集群,可以不需要考虑使用Namespace,如果需要它们提供特殊性质时,可以开始使用Namespace。

Namespace为名称提供了一个范围。资源的Names在Namespace中具有唯一性。

Namespace是一种将集群资源划分为多个用途(通过 resource quota)的方法。

在未来的Kubernetes版本中,默认情况下,相同Namespace中的对象将具有相同的访问控制策略。

对于稍微不同的资源没必要使用多个Namespace来划分,例如同意软件的不同版本,可以使用labels(标签)来区分同一Namespace中的资源。

查询命名空间

[root@master ~]# kubectl get namespace
NAME STATUS AGE
c7n-system Active 30d
default Active 46d
eas Active 45d
kafka Active 38d
kube-public Active 46d
kube-system Active 46d
[root@master37 ~]#

注意:namespace包含两种状态”Active”和”Terminating”。在namespace删除过程中,namespace状态被设置成”Terminating”。

创建命名空间
1.直接创建命名空间

kubectl create namespace mynamespace

2.通过文件创建命名空间cat

[root@master37 ~]# cat mynamespace.yaml
apiVersion: v1
kind: Namespace
metadata:
name: mynamespace
[root@master37 ~]#

执行yaml文件生成mynamespace命名空间

[root@master37 ~]# kubectl apply -f mynamespace.yaml
namespace/mynamespace created
[root@master37 ~]#

注意:命名空间名称满足正则表达式a-z0-9?,最大长度为63位

删除命名空间

kubectl delete namespaces mynamespace

查看所有命名空间下pod

[root@master37 ~]# kubectl get pod --all-namespaces
NAMESPACE NAME READY STATUS RESTARTS AGE
kube-system coredns-86c58d9df4-d24nb 1/1 Running 1 46d
kube-system coredns-86c58d9df4-pq6qt 1/1 Running 1 46d
kube-system etcd-master37 1/1 Running 1 46d
kube-system filebeat-7mq2l 1/1 Running 12 38d
kube-system filebeat-cj6j9 1/1 Running 1 42d
kube-system filebeat-q594h 1/1 Running 2 42d
kube-system kube-apiserver-master37 1/1 Running 1 46d
kube-system kube-controller-manager-master37 1/1 Running 8 46d
kube-system kube-flannel-ds-amd64-8mwqh 1/1 Running 1 45d
kube-system kube-flannel-ds-amd64-cnj5c 1/1 Running 1 38d
kube-system kube-flannel-ds-amd64-gw6qv 1/1 Running 1 45d
kube-system kube-flannel-ds-amd64-trjqr 1/1 Running 7 45d
kube-system kube-proxy-65w67 1/1 Running 1 46d
kube-system kube-proxy-f7f5s 1/1 Running 2 45d
kube-system kube-proxy-jjb56 1/1 Running 1 45d
kube-system kube-proxy-vvdq4 1/1 Running 1 38d
kube-system kube-scheduler-master37 1/1 Running 8 46d
kube-system kubernetes-dashboard-57df4db6b-4kvfn 1/1 Running 1 45d
kube-system kubernetes-dashboard-57df4db6b-hxvlq 1/1 Running 2 45d
kube-system nfs-client-provisioner-759cc8b85c-ndd5f 1/1 Running 0 30d
kube-system prometheus-9d74f4d95-rn776 1/1 Running 0 5d1h
kube-system tiller-deploy-5d4955d66-72rhz 1/1 Running 0 32d
kube-system traefik-ingress-controller-4sxrh 1/1 Running 2 45d
kube-system traefik-ingress-controller-qxx9x 1/1 Running 1 45d
kube-system traefik-ingress-controller-w7z2c 1/1 Running 1 38d

删除一个namespace会自动删除所有属于该namespace的资源。
default和kube-system命名空间不可删除。

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

分享:
云原生
使用钉钉扫一扫加入圈子
+ 订阅

云原生时代,是开发者最好的时代

其他文章