什么是命名空间
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必须小于或等于限额,说明命名空间限制成功
下一节