一、命名空间
1、简介
在一个物理集群上提供了多个虚拟集群。这些虚拟集群被称为命名空间。k8s中名称空间是用来隔离集群资源,而k8s中的资源也分为名称空间级资源以及集群级资源。
你为什么需要命名空间?隔离。
隔离有很多优点,如它提供了安全和干净的环境。如果你是基础设施的所属者,并且要为开发者提供环境,隔离就相当重要。你最不需要的就是,一个不熟悉你集群是如何搭建的人去修改系统配置 —— 这可能导致所有人都无法登录。
2、如何使用命名空间
命名空间适用于存在很多跨多个团队或项目的用户的场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间。当需要名称空间提供的功能时,请开始使用它们。
命名空间为名称提供了一个范围。资源的名称需要在命名空间内是唯一的,但不能跨命名空间。命名空间不能相互嵌套,每个 Kubernetes 资源只能在一个命名空间中。
命名空间是在多个用户之间划分集群资源的一种方法(通过资源配额)。
在 Kubernetes 未来版本中,相同命名空间中的对象默认将具有相同的访问控制策略。
不需要使用多个命名空间来分隔轻微不同的资源,例如同一软件的不同版本:使用 labels 来区分同一命名空间中的不同资源。
3、列出所有集群的当前名称空间
[root@k8s-master-01 ~]# kubectl get namespaces
NAME STATUS AGE
default Active 6d
kube-node-lease Active 6d
kube-public Active 6d
kube-system Active 6d
4、kubernetes四个初始名称空间
1)default
创建名称空间级别的资源对象,但未指定从属的名称空间将默认使用default名称空间
2)kube-public
用于为集群上的所有用户(包括未经身份验证的用户)提供公共可用的名称空间,保留给集群使用,以防某些资源在整个集群中公开可见。此名称空间公共方面仅是约定,不是要求。
3)kube-system
用于部署k8s自身相关的组件,不建议在该名称空间中运行与系统无关的工作负载。
4)kube-node-lease
目前是专用于放置kubelet lease 对象的名称空间,这些对象对于k8s系统自身健康运行至关重要要。不建议在该名称空间中运行与系统无关的工作负载。
5、获取默认名称空间信息
[root@k8s-master-01 ~]# kubectl get namespaces
NAME STATUS AGE
default Active 6d
kube-node-lease Active 6d
kube-public Active 6d
kube-system Active 6d
[root@k8s-master-01 ~]#
[root@k8s-master-01 ~]# kubectl get namespaces default
NAME STATUS AGE
default Active 6d1h
[root@k8s-master-01 ~]# kubectl describe namespaces default
Name: default
Labels: <none>
Annotations: <none>
Status: Active
No resource quota.
No LimitRange resource.
6、创建Namespace