일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
- MaxRAMPercentage
- SpringBoot
- SpringBoot 2.0
- openjdk
- 다중 데이타소스
- docker
- JPA
- 디자인 패턴
- Design Pattern
- Multi Datasource
- JDK
- 변경 감지
- 트랜잭션 쓰기 지연
- mybatis
- exit code
- 종료코드
- K8s
- ManyToMany
- Entity
- ManyToOne
- OracleJDK
- dirty check
- 영속화
- 다중 트랜잭션
- Java
- OneToMany
- Multi Transaction
- chroot exit code
- 활성프로브
- OneToOne
- Today
- Total
목록개발/docker & k8s (4)
조금 평범한 개발 이야기
개요 k8s 는 클러스트 노드에 대한 장애 내성을 가지고 있어 문제가 있다고 판단하면 컨테이너를 재시작 합니다. 문제가 있다는 것을 판단하는 기준은 다양한데 k8s worker 문제가 있어 활성 프로브 (LivenessProbe) 의 응답을 제대로 받지 못하거나 OOM 에러와 같이 컨테이너가 필요한 메모리를 충분히 확보하지 못했을때 발생 됩니다. 이렇게 다양한 기준으로 컨테이너가 종료되는데 원인을 파악하는 방법에 대해서 알아 보도록 하겠습니다. 컨테이너 상태 확인하기 컨테이너가 재시작 되면 재시작되기 직전의 종료 상태가 컨테이너 설정에 남는데 이를 먼저 확인해 봅니다. 컨텍스트에 있는 파드 리스트를 확인해 보겠습니다. (⎈ |jogeum-context:default)❯ kubectl get pods NA..
개요 k8s 는 워커의 자원 (cpu, memory) 을 공유하기 때문에 리소스 제한을 통해 파드가 사용할 자원을 미리 정의 합니다. 이는 워커에 있는 파드들이 요구하는 자원이 워커의 자원을 넘어서는 오버커밋 상태가 되었을때 특정 파드가 종료되거나 이상 동작되는 것을 막기 위함 입니다. resources: requests: cpu: 1 memory: 1Gi limits: cpu: 1 memory: 1Gi SPRING BOOT 으로 구성되었고 xms, xmx 메모리 설정이 아래와 같이 run.sh 에 1g 로 설정된 이미지가 있다고 가정해 보겠습니다. # Dockerfile ENTRYPOINT ["./run.sh"] #!/usr/bin/env bash exec java \ -jar /usr/local/se..
리소스 오버커밋 k8s에 파드를 띄울때 리소스 제한을 설정하지 않으면 파드는 워커 vm 에 있는 cpu, memory 를 서로 공유 하게 됩니다. 즉 파드 하나가 worker 의 모든 자원을 사용할 수도 있다는 이야기 입니다. 일반적인 경우에는 문제가 없으나 일순간 파드들이 동시에 많은 cpu, memory 자원을 사용하려고 할때 문제가 발생 됩니다. CPU CPU 의 경우 워커 vm 이 가지는 최대 Core 를 넘어서는 요청이 들어오면 오버커밋 상황이 되며 기대하는 응답 보다 느리게 동작이 됩니다. 이 경우에는 초과되는 요청을 한 파드가 퇴거(evict) 대상으로 지정되지 않으며 단지 워커가 전체적으로 느리게 동작이 될 뿐입니다. MEMORY 메모리의 경우 이와 다르게 최대 메모리 를 넘어서는 오버커밋..
쿠버네티스 준비 대시보드 설치 계정과 권한 계정 생성 계정 토큰 조회 대시보드 로그인 대시보드 삭제 쿠버네티스 (kubernetes) 쿠버네티스는 컨테이너화 되어 있는 서비스를 배포하고 손쉽게 스케일링 및 관리를 할 수 있는 오케스트레이션 도구 입니다. 쿠버네티스는 모든 명령은 커멘드(kubectl) 기반으로 이루어지지만 쿠버네티스에 구성된 서비스를 한눈에 확인하기 쉽게 하기 위해 gui 도구인 대시보드 (dashboard)를 별도로 설치해야 합니다. 준비 테스트 환경은 mac에서 작업이 진행되기 때문에 먼저 대시보드를 사용하기 전에 docker desktop for mac 이 설치되어 있어야 합니다. docker desktop 다운로드 https://hub.docker.com/editions/commu..