认识
一、认识
在 Kubernetes
中,Namespace
(命名空间) 是一个用于将集群资源划分为不同虚拟集群的机制。它们用于隔离和组织 Kubernetes
资源,使不同的用户、团队或项目可以在同一个 Kubernetes
集群上独立运行并避免资源冲突。
Kubernetes
集群中的资源(如 Pod
、Service
、ConfigMap
、Secret
等)默认都存在于一个共享的全局命名空间中。Namespace
允许你将资源划分到不同的逻辑组(即命名空间)中,以实现隔离、资源管理和访问控制。
Namespace
并不影响节点资源的实际物理隔离,而是通过逻辑上的分组和权限控制,使得多个用户和应用程序能够在共享的集群中独立运行。
二、用途
2.1 资源隔离
资源隔离:通过使用 Namespace
,你可以为不同的团队、部门或项目分配单独的命名空间,这样每个团队可以在自己的命名空间中创建和管理资源,不会相互影响。
2.2 资源配额
资源配额:Namespace
允许为不同的命名空间设置资源配额(如 CPU
、内存、存储等),从而限制每个命名空间的资源使用,防止某个命名空间中的应用消耗过多的集群资源。
2.3 访问控制
访问控制: 通过结合 Kubernetes
的 RBAC
(基于角色的访问控制),你可以对不同的命名空间设置访问权限,确保只有授权的用户或服务账户可以访问和操作指定的命名空间。
2.4 避免名称冲突
避免名称冲突:由于每个命名空间是独立的,不同命名空间中的资源可以具有相同的名称,从而避免了名称冲突的问题。例如,你可以在不同的命名空间中有相同名称的 Pod
或 Service
。
三、默认 Namespace
Kubernetes
集群中默认存在以下命名空间:
-
default
:集群中的默认命名空间,如果没有显式指定资源的命名空间,资源会自动创建在default
命名空间中。 -
kube-system
:Kubernetes
自身的系统资源所在的命名空间,包含Kubernetes
运行时需要的Pod
和Service
,如kube-dns
、kube-proxy
等组件。 -
kube-public
:这个命名空间通常用于公开的资源,所有用户都可以访问,主要用于共享的公共信息。 -
kube-node-lease
:用于节点心跳相关的资源管理。