Skip to content

Latest commit

 

History

History
57 lines (41 loc) · 1.94 KB

File metadata and controls

57 lines (41 loc) · 1.94 KB

Limiting container resources with Kubernetes

Kubernetes enables limiting the CPU and/or memory resources that can be used by a container.

Apply resource-limits.yaml to your cluster.

kubectl apply -f https://raw.githubusercontent.com/dotnet/dotnet-docker/main/samples/kubernetes/resource-limits/resource-limits.yaml

Apply the local file if you've cloned the repo.

kubectl apply -f resource-limits.yaml

See resource limits for the deployment.

kubectl describe deployment

Or look at the pod (only relevant output shown).

$ kubectl get po
NAME                                      READY   STATUS    RESTARTS   AGE
dotnet-resource-limits-54b5c75fdd-jjcbp   1/1     Running   0          12s
$ kubectl describe pod dotnet-resource-limits-54b5c75fdd-jjcbp
    Limits:
      cpu:     500m
      memory:  100Mi
    Requests:
      cpu:        250m
      memory:     60Mi

Create a proxy to the service.

kubectl port-forward service/dotnet-resource-limits 8080

View the sample app at http://localhost:8080/ or call curl http://localhost:8080/Environment. You can see memory and CPU usage displayed. CPU is reported as an integer and always rounded up to the next whole integer (for example, 0.25 is rounded up to 1).

% curl http://localhost:8080/Environment
{"runtimeVersion":".NET 8.0.5","osVersion":"Alpine Linux v3.19","osArchitecture":"X64","user":"root","processorCount":1,"totalAvailableMemoryBytes":78643200,"memoryLimit":104857600,"memoryUsage":34095104,"hostName":"dotnet-resource-limits-8685bd4b75-jltn5"}

processorCount is display as 1, as expected.

Delete the resources (remote URL or local manifest).

kubectl delete -f https://raw.githubusercontent.com/dotnet/dotnet-docker/main/samples/kubernetes/resource-limits/resource-limits.yaml