⚠️ Local Minikube 환경에서 진행하였습니다. ⚠️
▪︎ Replicaset으로 생성
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: cn-app-rs
spec:
replicas: 3
selector:
matchLabels:
app: cn-app
template:
metadata:
labels:
app: cn-app
spec:
containers:
- name: cn-app
image: uh2959/cn-action
resources:
limits:
memory: "256Mi"
cpu: "500m"
- ReplicaSet 생성 시에는 resources의 request 선언 에러가 뜸..
- 정상적으로 생성 및 확인
- 인줄 알았으나..
- 또 OOMKilled.. CrashLoopBackOff..
- 그래서 파드 자원 상태를 확인해보니 메모리가 터지려 하는 것을 볼 수 있다.
- 메모리와 cpu 두 배로 늘리기
resources:
limits:
memory: "512Mi"
cpu: "1000m"
- 그랬더니 하나가 pending에서 안 넘어간다.
- 이번에는 cpu 자원 할당을 너무 해줘서 줄 수 있는 것이 없다는데..
- cpu 원상 복구
resources:
limits:
memory: "512Mi"
cpu: "500m"
- 진짜 이젠 정상적으로 보인다.
▪︎ 트러블 슈팅
❓ 여기까지의 이슈 정리 및 추후 과제
- 자원 리소스를 어떻게 효율적으로 할당해주고 관리해야 하는가
⇒ 파드 선언 시 컨테이너 자원 할당량에 대한 정책 결정에 대한 논의한 내용
- scale in/out 설정 고려한다면
→ limit [컨테이너의 stable 상태를 고려한 리소스]
→ request [컨테이너의 시스템 최소 유지 상태를 고려한 리소스] - scale in / out 설정 미고려한다면
→ limit [컨테이너의 과부하 상태를 고려한 리소스]
→ request [컨테이너의 stable 상태를 고려한 리소스]
- 간단한 jar 애플리케이션인데 뭐가 이렇게 메모리를 많이 잡아먹는 건지?
⇒ ’JVM은 메모리를 많이 먹는 구조라고 판단이 들어 JVM에 대한 구조 파악을 해봐야겠다.’
- ⭐️ JVM 메모리 사용 계산 ⭐️
- 파드 안전하게 생성 및 QOS 정책 설정
⇒ Pod 안전하게 생성/배포 및 QoS 정책 설정
- JVM은 왜 메모리를 많이 잡아먹는가?
⇒ 컨테이너에서 JVM은 왜 메모리 먹는 하마였을까?
'Kubernetes' 카테고리의 다른 글
[Minikube] NodePort Type 서비스 생성 (0) | 2022.11.12 |
---|---|
[Minikube] ClusterIP Type 서비스 생성 (0) | 2022.11.12 |
[Minikube] Pod 생성 (0) | 2022.11.12 |
YAML 문법 알아보기 (0) | 2022.11.11 |
컨테이너에서 JVM은 왜 메모리 먹는 하마였을까? (1) | 2022.11.10 |