跳到主要内容

认识

2024年09月13日
柏拉文
越努力,越幸运

一、认识


Kubernetes 中,Namespace(命名空间) 是一个用于将集群资源划分为不同虚拟集群的机制。它们用于隔离和组织 Kubernetes 资源,使不同的用户、团队或项目可以在同一个 Kubernetes 集群上独立运行并避免资源冲突。

Kubernetes 集群中的资源(如 PodServiceConfigMapSecret 等)默认都存在于一个共享的全局命名空间中。Namespace 允许你将资源划分到不同的逻辑组(即命名空间)中,以实现隔离、资源管理和访问控制。

Namespace 并不影响节点资源的实际物理隔离,而是通过逻辑上的分组和权限控制,使得多个用户和应用程序能够在共享的集群中独立运行。

二、用途


2.1 资源隔离

资源隔离:通过使用 Namespace,你可以为不同的团队、部门或项目分配单独的命名空间,这样每个团队可以在自己的命名空间中创建和管理资源,不会相互影响。

2.2 资源配额

资源配额Namespace 允许为不同的命名空间设置资源配额(如 CPU、内存、存储等),从而限制每个命名空间的资源使用,防止某个命名空间中的应用消耗过多的集群资源。

2.3 访问控制

访问控制: 通过结合 KubernetesRBAC(基于角色的访问控制),你可以对不同的命名空间设置访问权限,确保只有授权的用户或服务账户可以访问和操作指定的命名空间。

2.4 避免名称冲突

避免名称冲突:由于每个命名空间是独立的,不同命名空间中的资源可以具有相同的名称,从而避免了名称冲突的问题。例如,你可以在不同的命名空间中有相同名称的 PodService

三、默认 Namespace


Kubernetes 集群中默认存在以下命名空间:

  1. default:集群中的默认命名空间,如果没有显式指定资源的命名空间,资源会自动创建在 default 命名空间中。

  2. kube-systemKubernetes 自身的系统资源所在的命名空间,包含 Kubernetes 运行时需要的 PodService,如 kube-dnskube-proxy 等组件。

  3. kube-public:这个命名空间通常用于公开的资源,所有用户都可以访问,主要用于共享的公共信息。

  4. kube-node-lease:用于节点心跳相关的资源管理。