引言

    什么是K8s Kubernetes(简称K8s)是一个开源的容器编排平台,旨在自动化容器化应用的部署、扩展和管理。它通过提供高效的工具和API,使得在大规模集群环境中管理容器变得更加容易。

    在K8s中使用资源限制的作用 资源限制是K8s中的一种重要功能,它可以帮助管理和限制在特定命名空间(Namespace)中可用的资源总量,从而确保集群的稳定运行和资源的高效利用。

Kubernetes资源限制概述

    资源请求的设定(Requests) 资源请求用于告知K8s需要多少资源来运行Pod,这有助于K8s进行资源调度。

    资源限制的设定(Limits) 资源限制用于定义Pod可以使用的最大资源量,以防止Pod消耗过多资源,从而影响其他Pod的运行。

Namespace层面的资源限制

    资源配额支持的资源类型 资源配额支持的资源类型包括CPU、内存、Pod数量等。

    示例:设置命名空间的资源配额

apiVersion: v1
kind: Namespace
metadata:
  name: my-namespace
spec:
  resourceQuotas:
    - apiVersion: v1
      kind: ResourceQuota
      metadata:
        name: resourcequota-example
      spec:
        hard:
          requests.cpu: "1"
          requests.memory: 2Gi
          limits.cpu: "2"
          limits.memory: 4Gi
          pods: 10

Deployment层面的资源限制

  1. 如何在Deployment中设置资源请求和限制
apiVersion: apps/v1
kind: Deployment
metadata:
  name: my-deployment
spec:
  replicas: 3
  selector:
    matchLabels:
      app: my-app
  template:
    metadata:
      labels:
        app: my-app
    spec:
      containers:
      - name: my-container
        image: my-image
        resources:
          requests:
            memory: "64Mi"
            cpu: "250m"
          limits:
            memory: "128Mi"
            cpu: "500m"
  1. 资源请求与限制的影响
  2. 资源调度:K8s会优先考虑具有较高资源请求的Pod进行调度。
  3. 资源管理:资源限制有助于防止单个Pod消耗过多资源,从而影响其他Pod的运行。
  4. 容器的生命周期:当Pod的资源使用超过限制时,K8s可能会杀死Pod,并重新创建一个新的Pod。

Pod层面的资源限制

  1. 如何在Pod中设置资源请求和限制
apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: my-container
    image: my-image
    resources:
      requests:
        memory: "64Mi"
        cpu: "250m"
      limits:
        memory: "128Mi"
        cpu: "500m"
  1. Pod资源请求与限制的计算
  2. 单个容器的资源:根据单个容器的资源请求和限制计算Pod的总资源请求和限制。
  3. Pod层面资源请求和限制的总和:将所有容器的资源请求和限制相加,得到Pod的总资源请求和限制。

通过以上内容,相信你已经掌握了K8s核心:轻松突破Pod资源限制,解锁高效集群管理新境界!在实际应用中,请根据自己的需求进行合理配置,以确保集群的稳定运行和资源的高效利用。