안녕하세요 Hallo 팀입니다.이번 시간에는 GKE를 잘 사용하기 위한 리소스 관리에 대해 알아보겠습니다.
서비스가 안정적으로 제공되기 위해서는 Pod 내의 애플리케이션이 원활하게 동작할 수 있는 충분한 자원이 확보되어야 합니다. 만약 특정 Pod나 컨테이너가 리소스를 독점한다면 다른 Pod에서 서비스를 제공하는 데에 문제가 발생할 수 있습니다. 그러므로 각 Pod의 리소스를 제한하고 관리하는 것이 필요합니다.
ResourseQuota
Resource Quota는 네임스페이스별로 리소스 사용과 생성을 제한합니다. 쿠버네티스에는 기본적으로 Resource Quota 지원이 활성화되어 있어, computing resource, storage resource, object count 등 다양한 타입을 통해 Resource Quota를 설정할 수 있습니다.
다음은 Compute Resource Quota의 예시입니다. test 네임스페이스에 CPU는 400~600m으로, 메모리는 200~500MiB로 리소스를 제한했습니다.
apiVersion: v1
kind: ResourceQuota
metadata:
name: test
sepc:
hard:
requests.cpu: 400m
requests.memory: 200Mi
limits.cpu: 600m
limits.memory: 500Mi
LimitRange
LimitRange는 네임스페이스에서 리소스 할당을 제한하는 정책으로, 네임스페이스 내에서 포드나 컨테이너는 네임스페이스의 Resource Quota에서 지정된 만큼의 CPU와 메모리를 사용할 수 있습니다. 하나의 네임스페이스에 하나의 LimitRange를 생성할 수 있습니다.
- 네임스페이스에서 포드 또는 컨테이너별 최소 및 최대 컴퓨팅 리소스 사용량을 지정한다.
- 네임스페이스에서 스토리지 클래스별 최소 및 최대 스토리지 요청을 지정한다.
- 네임스페이스에서 리소스에 대한 요청과 제한 사이의 비율을 지정한다.
- 네임스페이스에서 컴퓨팅 리소스에 대한 default Request와 Limit을 설정하고, 런타임에 있는 컨테이너에 자동으로 설정한다.
다음은 Limit Range의 예시입니다.
apiVersion: v1
kind: LimitRange
metadata:
name: limit-example
spec:
limits:
- type: Pod
min:
cpu: 50m
memory: 5Mi
max:
cpu: 1
memory: 1Gi
- type: Container
defaultRequest:
cpu: 100m
memory: 10Mi
default:
cpu: 200m
memory: 100Mi
min:
cpu: 50m
memory: 5Mi
max:
cpu: 1
memory: 200Mi
maxLimitRequestRatio:
cpu: 4
memory: 10
- type: PersistentVolumeClaim
min:
storage: 1Gi
max:
storage: 10Gi
'CSP (Cloud Service Provider) > GCP' 카테고리의 다른 글
[Google Cloud Platform] Cloud Composer (0) | 2022.11.28 |
---|---|
Cloud Functions (1) | 2022.11.28 |
[GCP]IAM 리소스 기반 접근 제어 설정 가이드 (0) | 2022.11.14 |
[GKE 사용하기] 서비스 디스커버리(Service Discovery)(1) (0) | 2022.11.14 |
Composer DAG 자동 실행 방지 설정 방법 (0) | 2022.11.11 |
댓글