本次介绍两个关联度很高的类型,Namespace和Resource Quota。
在 Kubernetes 中,Namespace
?是对集群的一种虚拟化分区,用于将资源(如 Pod、Service、ReplicaSet 等)进行逻辑隔离和组织。它是一种对 Kubernetes 集群进行资源级别的命名和隔离的机制。
通过使用?Namespace
,可以在同一个 Kubernetes 集群中创建多个逻辑上相互独立的环境。每个?Namespace
?提供一个独立的命名空间,以防止命名冲突,并允许不同的团队或项目在同一个集群中共享资源。
Namespace
?具有以下特性:
Namespace
?内的资源只在该?Namespace
?内可见和可访问。Namespace
?之间的资源名称可以相同,因为它们在不同的命名空间中被认为是唯一的。Role
?和?RoleBinding
?来定义不同?Namespace
?内的用户或服务账号的权限范围。Namespace
?可以有自己的资源限制和配额,以控制每个命名空间内的资源使用情况。例如,可以创建一个名为?development
?的?Namespace
,在该?Namespace
?中部署和管理开发环境的相关资源;同时,可以创建一个名为?production
?的?Namespace
,在该?Namespace
?中部署和管理生产环境的相关资源。这样,不同环境的资源可以相互隔离,提高部署的灵活性和可管理性。
使用 Kubernetes CLI(如?kubectl
),可以创建、查看、切换和删除?Namespace
,以及在不同的?Namespace
?中操作资源。
以下是?kind
?类型为Namespace?的 YAML 编写示例:
kind
?类型为?Namespace
?的 YAML 文件可以使用以下关键字和格式编写:
apiVersion: v1
kind: Namespace
metadata:
name: <namespace-name>
apiVersion
:指定 Kubernetes API 版本。对于?Namespace
?对象,通常使用?v1
。kind
:指定对象类型,对于?Namespace
?对象,使用?Namespace
。metadata
:指定对象的元数据,包括名称和其他可选项。name
:指定?Namespace
?的名称,是必填项,用于唯一标识?Namespace
。namespace经常和Resource Quota一起使用。
在 Kubernetes 中,Resource Quota
?(资源配额)是一种机制,用于限制命名空间(Namespace)中的资源使用量。它允许管理员对命名空间内的资源进行精确控制和配额分配,以确保各个命名空间的资源使用在可控范围内。
Resource Quota 可以限制的资源包括:
通过定义 Resource Quota 对象,可以为命名空间设置这些限制。一旦 Resource Quota 应用于命名空间,系统会监视并确保在此命名空间内的资源使用不超过指定的限制。
kind
?类型为?ResourceQuota
?的 YAML 文件可以使用以下关键字和格式编写:
apiVersion: v1
kind: ResourceQuota
metadata:
name: quota-example
spec:
hard:
cpu: "4"
memory: 8Gi
persistentvolumeclaims: "5"
pods: "20"
apiVersion
:指定 Kubernetes API 版本。对于?ResourceQuota
?对象,通常使用?v1
。kind
:指定对象类型,对于?ResourceQuota
?对象,使用?ResourceQuota
。metadata
:指定对象的元数据,包括名称和其他可选项。name
:指定?ResourceQuota
?的名称,是必填项,用于唯一标识?ResourceQuota
。spec
:指定资源配额规格,即资源限制的详细设置。hard
:指定资源的硬限制,即资源的最大可用量。上述配置中,为名为?quota-example
?的 Resource Quota 设置了资源限制:将 CPU 限制为 4 个核心,内存限制为 8GB,持久卷数限制为 5 个,Pod 数量限制为 20 个。
要在命名空间上设置资源限制,可以使用 Kubernetes 中的 Resource Quota(资源配额)对象。跟随以下步骤进行设置:
首先,创建一个 YAML 文件(例如?resource-quota.yaml
)来定义 Resource Quota 对象。示例如下:
apiVersion: v1
kind: ResourceQuota
metadata:
name: my-resource-quota
namespace: my-namespace
spec:
hard:
cpu: "2"
memory: 2Gi
pods: "10"
上述示例将?my-namespace
?命名空间中的资源限制如下:CPU 限制为 2 个核心,内存限制为 2GB,Pod 数量限制为 10。
其次,运行以下命令将 Resource Quota 对象应用于指定的命名空间:
kubectl apply -f resource-quota.yaml
最后,要查看命名空间上已应用的 Resource Quota 信息,请运行以下命令:
kubectl describe resourcequota -n my-namespace
将?my-namespace
?替换为实际的命名空间名称。
此命令将显示 Resource Quota 的详细信息,包括已分配的配额和已使用的资源。