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