반응형
resources
resources:
limits:
cpu: '4'
memory: 10Gi
requests:
cpu: 1600m
memory: 5Gi
container의 spec 부분을 보면 resources 부분에 limits와 requests 항목이 있다. 이는 컨테이너 구동시 필요한 최소 자원량(requests)와 최대 자원량(limits)를 정의하는 부분이다.
requests : 스케쥴러가 파드를 노드에 배치시킬 때 고려하는 리소스 요청. 이를 수용 가능한 노드에만 파드를 배치한다.
limits : 애플리케이션이 최대로 증가할 수 있는 상한 값
만약 requests나 limits에 cpu, mem 설정이 없으면 상한 없이 노드의 자원을 최대한 쓴다라는 의미다.
재밌는건 위의 두 가지 값의 유무에 따라서 kubelet이 파드를 죽이는 순서가 달라진다. 자세한 내용은 아래 표 참고
분류 | 설명 | 우선순위 |
Best-Effort 파드 | - request, limit 값이 없음 - 자원이 부족하면 가장 먼저 죽음 (kubelet이 죽임) |
3 |
Bustable 파드 | - 둘다 있음 ( limits > request) - 최소한의 자원 보장을 받지만 자원이 부족하면 최선적 파드 다음에 죽음 |
2 |
Guaranteed 파드 | - request와 limit이 같음 - 가장 우선순위가 높고 제일 나중에 죽음 |
1 |
즉 파드의 특성에 따라서 request/limit 값의 유무를 조절하여 서비스 품질 우선순위를 정한다.
어떤 책에서 추천하는 방법은 아래와 같은 방법으로 정하는 케이스도 있다고 하는데, 정해진 것은 아니니 참고만 하면 될 것 같다.
* 운영이 아닌 환경에서 하드웨어를 최적으로 활용하고 싶다 → Best-effort와 Burtable을 주로 활용
* 운영 환경이 안정적으로 예측 가능하길 원한다 → Guaranteed 컨테이너에 약간의 Burstable을 섞어서 사용
반응형
'ETC' 카테고리의 다른 글
[kubernetes] kubectl label selector에 여러개 라벨 조건 주기 (and 또는 or 조건) (0) | 2021.06.14 |
---|---|
[kubernetes] 배포 방법 정리 (고정/롤링/블루-그린/카나리 릴리즈 배포) (0) | 2021.04.25 |
[powershell] 파워쉘로 파일 업로드하기 (curl -T와 동일) (0) | 2021.04.14 |
티스토리에서 소스코드 예쁘게 하이라이트 넣는법 - colorscripter 사용법 (0) | 2021.03.13 |
[mysql/mariadb] 삭제시 나타나는 Cannot delete or update a parent row: a foreign key constraint fails 에러 해결법 (2) | 2021.02.10 |