Kubernetes

[Minikube] ReplicaSet 생성

uuuhhh 2022. 11. 12. 16:32

⚠️ 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 메모리 사용 계산 ⭐️
 

Properly limiting the JVM’s memory usage (Xmx isn’t enough)

The JVM is known to be greedy with memory and is infamously difficult to tune. This is pretty apparent when you set your -Xmx and find that…

medium.com

 

 

Pod 안전하게 생성/배포 및 QoS 정책 설정

📍 Epilogue 간단한 JAR 애플리케이션을 가지고 쿠버네티스 파드 배포를 시도하였다 ! 그런데 파드 상태가.. 엄청난 메모리 부족.. OOM Killed.. CrashLoopBackOff 상태 반복.. 파드 스펙 늘리고 다시 배포하

code1212-uh.tistory.com

 

컨테이너에서 JVM은 왜 메모리 먹는 하마였을까?

📍 Epilogue 간단한 JAR 애플리케이션을 가지고 쿠버네티스 파드 배포를 시도하였다 ! 그런데 컨테이너 상태가.. 엄청난 메모리 부족.. OOM Killed.. CrashLoopBackOff 상태 반복.. 파드 스펙 늘리고 다시 배

code1212-uh.tistory.com