k8s设置pod资源请求和限制

设置资源请求和限制

实验目标:
学习如何为 Pod 设置资源请求和限制,以优化集群资源分配。

实验步骤:

  • 创建一个 Deployment,并设置 CPU 和内存的资源请求和限制。
  • 使用 kubectl describe 命令查看资源分配情况。
  • 观察资源限制对 Pod 行为的影响。

今天继续我们k8s未做完的实验:设置资源请求和限制

因为我们之前的容器都是未用yaml文件而是直接拉取镜像启动的,今天我们使用配置文件跑nginx,并设置资源请求和限制。

创建

1、创建namespace

kubectl create namespace nginx-test

2、编写yaml文件。

yaml要求:设置资源限制和请求,并指定镜像版本为1.18,

# /kubeapi/data/project4/nginx-test.yaml

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-test
  namespace: nginx-test
spec:
  replicas: 1  #设置1个副本运行
  selector:
    matchLabels:
      app: nginx-test
  template:
    metadata:
      labels:
        app: nginx-test
    spec:
      containers:
      - name: nginx-test
        image: nginx:1.18
        resources:
          requests:  #容器所需的最少资源
            memory: "4Mi"  #请求4MiB内存
            cpu: "2m"  #请求250m CPU(0.0002个CPU核)
          limits:  #容器可以使用的最大资源
            memory: "8Mi" #限制为8MiB内存
            cpu: "4m" #限制为500m CPU(0.0004个CPU核)
        ports:
        - containerPort: 80 #容器端口映射,暴露80端口

pod启动并运行成功

在这里插入图片描述

3、验证

在这里插入图片描述


测试资源限制

由于nginx的性能过于强悍。目前又并未安装 Prometheus监控,单纯采用脚本去模拟并发连接,对于设置的资源限制一直控制不好量。模拟并未有明显的结果。还在寻求其他办法。 后续有等装了监控后看效果图会更加明显一点


扩展

除了在容器创建时的yaml文件中指定资源限制,在namespace中也可以这么做。这样的话每个运行在此namespace中的容器将自动限制资源使用

1、ResourceQuota

ResourceQuota 允许限制命名空间中可用的资源总量,如CPU、内存、存储以及Pod的数量等。通过设置ResourceQuota,可以确保一个命名空间不会超出分配的资源配额。

apiVersion: v1
kind: ResourceQuota
metadata:
  name: qt-quota
  namespace: qt-name
spec:
  hard:
    pods: "10"
    requests.cpu: "2"
    requests.memory: "2Gi"
    limits.cpu: "4"
    limits.memory: "4Gi"

2、LimitRange

LimitRange 允许为命名空间中的Pod和容器设置默认的资源请求和限制。可以确保新创建的Pod和容器具有合理的资源限制。

apiVersion: v1
kind: LimitRange
metadata:
  name: qt-limits
  namespace: qt-name
spec:
  limits:
  - default:
      cpu: "500m"
      memory: "256Mi"
    defaultRequest:
      cpu: "250m"
      memory: "128Mi"
    type: Container

3、示例

创建命名空间

kubectl create namespace qt-name

应用 ResourceQuota

kubectl apply -f resource-quota.yaml

应用 LimitRange

kubectl apply -f limit-range.yaml

创建实列验证

kubectl create deployment qt-nginx -n qt-name --image nginx:alpine --replicas=3

在这里插入图片描述

查看命名空间中的 ResourceQuotaLimitRange 配置

kubectl get resourcequota -n qt-name

在这里插入图片描述
这和我们上述限制的,资源要求是一致的

查看容器内的资源限制情况
在这里插入图片描述

上述实验可知通过设置 ResourceQuotaLimitRange,可以有效地管理和控制命名空间中的资源使用情况,确保资源的合理分配和使用。

  • 5
    点赞
  • 7
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值