Kubernetes命名空间(Namespace):定义、使用场景和操作指南

什么是命名空间

Kubernetes 支持多个虚拟集群,它们底层依赖于同一个物理集群。 这些虚拟集群被称为命名空间。 kubernetes命名空间namespace是k8s集群级别的资源,可以给不同的用户、租户、环境或项目创建对应的命名空间,例如,可以为test、devlopment、production环境分别创建各自的命名空间。

namespace应用场景

命名空间适用于存在很多跨多个团队或项目的用户场景。对于只有几到几十个用户的集群,根本不需要创建或考虑命名空间

namespace操作

#创建 [root@pengfei-master1 pod]# kubectl create ns test namespace/test created  #查看 [root@pengfei-master1 pod]# kubectl get ns  NAME              STATUS   AGE default           Active   5d7h kube-node-lease   Active   5d7h kube-public       Active   5d7h kube-system       Active   5d7h test              Active   12s #删除 [root@pengfei-master1 pod]# kubectl delete ns test

namespace资源限额

如何对命名空间进行限额

查看帮助

[root@pengfei-master1 ~]# kubectl explain quota

限制命名空间cpu和内存、请求cpu和内存

#查看资源限制帮助 [root@pengfei-master1 ~]# kubectl explain quota

APIVersion 定义了对象的版本

kind 是表示此对象所代表的 REST 资源的字符串值。服务器可以根据客户端提交请求的端点来推断它。不能更新。采用驼峰命名法

metadata 对象的元数据

spec 定义所需的配额。它指定了命名空间中资源使用的限制

测试资源限制

#编写资源限制yaml [root@pengfei-master1 namespace]# cat nginx_quota.yaml  apiVersion: v1 kind: ResourceQuota metadata:   name: cpu-mem-quota   namespace: test spec:   hard:     requests.cpu: 2 #所有容器的CPU请求总额不得超过2 CPU     requests.memory: 2Gi #所有容器的内存请求总额不得超过2GiB     limits.cpu: 4 #所有容器的CPU限额总额不得超过4CPU     limits.memory: 4Gi  #所有容器的内存限额总额不得超过4 GiB  #创建的ResourceQuota对象将在test名字空间中添加以下限制: #每个容器必须设置内存请求(memory request),内存限额(memory limit),cpu请求(cpu request)和cpu限额(cpu limit)。 #ResouceQuota 对象是在我们的名称空间中创建的,并准备好控制该名称空间中的所有容器的总请求和限制.

创建一个nginx pod来验证限制

apiVersion: apps/v1 kind: Deployment #定义了资源对象类型为 Deployment metadata:   labels:     app: nginx-test   name: nginx   namespace: default spec:   selector: #指定了用于选择Pod的标签(matchLabels)     matchLabels:       app: nginx   template:#定义了创建Pod的模板,包括了Pod的标签(labels)     metadata:       labels:         app: nginx #跟matchLabels指定的app: nginx必须一样     spec:       containers: #定义了要在 Pod 中运行的容器       - name: nginx         image: nginx:1.17.2         imagePullPolicy: IfNotPresent #指定了镜像拉取策略为仅在本地不存在时才拉取         ports:         - containerPort: 80         resources:           requests:             memory: 100Mi             cpu: 4 #请求cpu超过了2Gi限额           limits:             memory: 4Gi             cpu: 2 

创建pod

[root@pengfei-master1 namespace]# kubectl apply -f pod_deployment.yaml  The Deployment "nginx" is invalid: spec.template.spec.containers[0].resources.requests: Invalid value: "4": must be less than or equal to cpu limit

创建pod报错 提示cpu必须小于或等于限额,说明命名空间限制成功

下一节