Kubernetes theory
March 27, 2023
LimitRange
LimitRange помогает задать рамки и значения по умолчанию для запросов и лимитов на ресурсы для всего namespace. При этом надо помнить, что записанные ограничения на уровне конкретных ресурсов имеют больший приоритет.
- Устанавливается на namespace;
- При создании ограничивает ресурсы, которые можно установить для пода, контейнера, PVC.
Пример ограничения ресурсов для подов.
cat <<EOF | kubectl apply --validate=false -f -
apiVersion: v1
kind: LimitRange
metadata:
name: cam-limits
namespace: default
labels:
limit: pod
environment: prod
annotations:
author: cameda
spec:
limits:
- type: Pod
min:
cpu: 100m
memory: 100Mi
max:
cpu: 300m
memory: 300Mi
EOFМы не сможем создать под, чей запрос на ресурсы (requests) меньше, чем указано в блоке min (cpu: 100m, 100Mi) и чьи лимиты (limits) указаны больше, чем в блоке max (cpu: 300m, 300Mi).
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: cam-nginx1
namespace: default
labels:
app: nginx
environment: prod
annotations:
author: cameda
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 150m
memory: 150Mi
limits:
cpu: 300m
memory: 300Mi
ports:
- containerPort: 80
- containerPort: 443
restartPolicy: Always
hostname: nginx
subdomain: web
EOFА манифест ниже не запустится, потому что в limits указано большее значение, чем установлено лимитом в LimitRange:
cat <<EOF | kubectl apply -f -
apiVersion: v1
kind: Pod
metadata:
name: cam-nginx1
namespace: default
labels:
app: nginx
environment: prod
annotations:
author: cameda
spec:
containers:
- name: nginx
image: nginx:latest
imagePullPolicy: IfNotPresent
resources:
requests:
cpu: 150m
memory: 150Mi
limits:
cpu: 400m
memory: 400Mi
ports:
- containerPort: 80
- containerPort: 443
restartPolicy: Always
hostname: nginx
subdomain: web
EOFError from server (Forbidden): error when creating "STDIN": pods "cam-nginx1" is forbidden: [maximum cpu usage per Pod is 300m, but limit is 400m, maximum memory usage per Pod is 300Mi, but limit is 419430400]
Пример ограничения для нескольких ресурсов.
cat <<EOF | kubectl apply --validate=false -f -
apiVersion: v1
kind: LimitRange
metadata:
name: cam-limits
namespace: default
labels:
limit: nginx
environment: prod
annotations:
author: cameda
spec:
limits:
- type: Pod
min:
cpu: 50m
memory: 50Mi
max:
cpu: 1
memory: 1Gi
- type: Container
defaultRequest:
cpu: 20m
memory: 20Mi
default:
cpu: 200m
memory: 100Mi
min:
cpu: 20m
memory: 20Mi
max:
cpu: 1
memory: 1Gi
maxLimitRequestRatio:
cpu: 4
memory: 10
- type: PersistentVolumeClaim
min:
storage: 500Mi
max:
storage: 10Gi
EOFПосмотреть информацию по LimitRange.
kubectl get limits kubectl describe limits cam-limits Name: cam-limits Namespace: default Type Resource Min Max Default Request Default Limit Max Limit/Request Ratio ---- -------- --- --- --------------- ------------- ----------------------- Pod cpu 50m 1 - - - Pod memory 50Mi 1Gi - - - Container cpu 20m 1 20m 200m 4 Container memory 20Mi 1Gi 20Mi 100Mi 10 PersistentVolumeClaim storage 500Mi 10Gi - - -
Полезные ссылки.
March 27, 2023, 07:40
0 views
0 reposts