Kubernetes · 4 min read · Dec 09, 2025

Limiti delle risorse in Kubernetes

Se il nodo ha abbastanza risorse disponibili, è possibile per un contenitore utilizzare più risorse. Possiamo specificare quanto di ciascuna risorsa un Container ha bisogno. Le risorse comuni da specificare sono CPU e memoria. Quando specifichiamo la richiesta di risorse per i Container in un Pod, lo scheduler decide su quale nodo posizionare il Pod. Quando specifichiamo un limite di risorse per un Container, il kubelet si occupa dei limiti in modo che il contenitore in esecuzione non possa utilizzare più di quel limite che abbiamo impostato.

Ad esempio, se impostiamo una richiesta di memoria di 100 MiB per un contenitore, allora il contenitore può provare a utilizzare più RAM. Ma se impostiamo un limite di memoria di 4GiB per quel Container, il runtime impedisce al contenitore di utilizzare più del limite di risorse configurato.

CPU e memoria sono chiamate risorse di calcolo.

Ogni Container di un Pod può specificare uno o più dei seguenti:

  • limiti su cpu
  • limiti su memoria
  • limiti su hugepages-
  • richieste per cpu
  • richieste per memoria
  • richieste per hugepages-

Per saperne di più sulle risorse in Kubernetes, clicca qui per visitare la documentazione ufficiale di Kubernetes.

In questo articolo, vedremo un esempio di un limite di risorse e richiesta per CPU e Memoria. Utilizzeremo anche il Metric Server. Il Metric Server è un aggregatore di dati sull’uso delle risorse nel cluster e non è distribuito per impostazione predefinita nel cluster. Utilizzeremo questo Metric Server per vedere il consumo di risorse da parte dei pod.

Prerequisiti

  1. Cluster Kubernetes con almeno 1 nodo worker.
    Se vuoi imparare a creare un Cluster Kubernetes, clicca qui. Questa guida ti aiuterà a creare un cluster Kubernetes con 1 Master e 2 Nodi su AWS Ubuntu 18.04 EC2 Instances.

Cosa faremo?

  1. Limiti delle risorse

Limiti delle Risorse

Prima di procedere e creare pod con requisiti di risorse specificati, installiamo il Metric Server.

Clona il repository Github del Metric Server utilizzando il seguente comando e installalo.

git clone https://github.com/kodekloudhub/kubernetes-metrics-server.git
cd kubernetes-metrics-server/

Crea il Metric Server utilizzando i file oggetto.

kubectl create -f .

install-metric-server

Aspetta un po’ di tempo per far iniziare il Metric Server. Dopo un po’, puoi eseguire il seguente comando per monitorare i nodi del cluster.

kubectl top node

Ora, crea un file di definizione del pod con il seguente contenuto che contiene richiesta e limite di memoria.

vim my-pod-with-memory.yml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod-memory-demo
spec:
  containers:
  - name: my-container-memory-demo
    image: polinux/stress
    resources:
      limits:
        memory: "50Mi"
      requests:
        memory: "20Mi"
    command: ["stress"]
    args: ["--vm", "1", "--vm-bytes", "30M", "--vm-hang", "1"]

my-pod-memory-demo

Puoi trovare la proprietà “resources” in cui abbiamo specificato il limite di memoria come 50Mi e la richiesta di memoria come 20Mi.

Controlla i pod esistenti con il namespace predefinito nel cluster.

kubectl get pods #Ottieni pod dal namespace predefinito

Crea un pod utilizzando la definizione del pod creata nel passo precedente.

kubectl create -f my-pod-with-memory.yml #Crea un pod
kubectl get pods

create-a-pod-with-memory-request-and-limit

Ora, se ottieni i dettagli del Pod, puoi vedere che il Pod sta richiedendo 20Mi di memoria e ha un limite di 50Mi di memoria.

kubectl get pods
kubectl describe pod my-pod-memory-demo #Descrivi il pod

describe-the-pod-and-check-memory

L’uso del pod può essere controllato utilizzando il seguente comando.

kubectl  top pods #Controlla il consumo di risorse da parte del pod

check-memory-consumption

Ora, crea una definizione del pod con richiesta e limite di CPU.

vim my-pod-with-cpu.yml
apiVersion: v1
kind: Pod
metadata:
  name: my-pod-cpu-demo
spec:
  containers:
  - name: my-container-cpu-demo    image: vish/stress
    resources:
      limits:        cpu: "1"
      requests:
        cpu: "0.5"
    args:
    - -cpus
    - "2"

my-pod-cpu-demo

Nel file sopra, puoi vedere che la definizione ha una proprietà “resource” con richiesta di CPU come 0.5 e limite come 1. Nota anche che stiamo passando 2 CPU come nostra richiesta, che è più del limite.

Ora, creiamo un pod con richiesta e limite di CPU utilizzando il seguente comando.

kubectl apply -f my-pod-with-cpu.yml #Crea un pod
kubectl get pods

create-a-pod-with-cpu-request-and-limit

Ottieni i dettagli del pod che abbiamo creato.

kubectl get pods
kubectl describe pod my-pod-cpu-demo

describe-the-pod-and-check-cpu

Puoi vedere che il Pod ha richiesto 0.5 o 500m CPU con un limite di 1 CPU.

Per controllare l’uso della CPU, utilizza il seguente comando.

kubectl top pod #Controlla il consumo di risorse da parte del pod

check-cpu-consumption

Nello screenshot sopra puoi vedere che anche dopo aver passato 2 CPU nella definizione del pod come argomento, non può consumare più del limite, cioè 1 CPU. Qui il pod “my-pod-cpu-demo” potrebbe consumare 999m CPU, che è equivalente a 1 CPU e non potrebbe aumentare il suo consumo.

Conclusione

In questo articolo, abbiamo visto i passaggi per abilitare il monitoraggio nel cluster utilizzando il Metric Server. Abbiamo visto come un pod può richiedere CPU e memoria e consumare risorse non oltre il limite specificato.

Share: X/Twitter LinkedIn

Ricevi i nuovi post nella tua casella di posta.

Nessuno spam. Disiscriviti in qualsiasi momento.