Kubernetes 트러블슈팅 가이드: 파드부터 커널 레벨까지.
·
트러블슈팅
본 문서는 K8S 에서 에러 발생 시 트러블슈팅하는 방법들에 대해 서술합니다. 트러블슈팅 접근 방법실무에서 겪는 Kubernetes 문제의 대부분은 다음 3가지 레이어에서 발생합니다:1. Pod 레벨 - 애플리케이션 로그, 컨테이너 설정2. 노드 레벨 - kubelet, containerd, 시스템 리소스3. 커널 레벨 - OOMKill, 디스크 I/O, 네트워크 드라이버문제 발생 시 단계별로 접근 문제 발생 시 단계별 접근┌─────────────────────────────────────┐│ 1. 애플리케이션 레벨 │ ← kubectl logs│ (Pod, Container) │└────────────────────────────..
EKS에서 nginx의 EBS 볼륨 Permission Denied
·
트러블슈팅
문제 상황에러 로그2025/08/20 01:06:18 [crit] 18#18: *725781 open() "/log/20250820_0106.log" failed (13: Permission denied) while logging request, client: 172.16.128.68, server: , request: "POST ...", upstream: "...", host: "..." 증상 - nginx 컨테이너가 `/log` 경로에 로그 파일 생성 실패 - Permission denied (13) 에러 반복 발생 - 업스트림 통신은 정상이지만 로깅만 실패 원인 분석1. EBS 볼륨의 특성EBS는 블록 스토리지, Pod에 마운트될 때 다음과 같은 특성이 있음: # 새로 생성된 EBS 볼륨의 ..
NLB, Istio 구성에서 curl 을 사용한 통신 과정
·
트러블슈팅
현업에서 네트워크 이슈 딥다이브 중 공부한 curl 을 사용한 통신 과정에 대해 블로그에 정리해둡니다.curl명령줄(CLI)에서 다양한 프로토콜을 이용해 데이터를 전송할 수 있는 도구.Client for URL브라우저의 역할을 GUI 없이 텍스트 기반 명령줄에서 수행해줌. 클라이언트 ↔ 서버 통신 과정네트워크 구성: NLB -> Istio Ingres Gateway -> EKS Pod 여기서 클라이언트는 curl, 서버는 NLB, Istio Ingress Gateway Pod, 실제 애플리케이션 Podcurl 로 보낸 요청은 최종 목적지인 애플리케이션 파드로 전달됨. 요청은 여러 단계의 서버(프록시)를 거쳐 전달됩니다.curl -> NLBDNS 는 도메인을 NLB 의 공인 IP 주소로 알려줌curl 은 ..
[Loki] SSD -> Distributed Mode
·
Observability
작업 배경로키를 적용한 후 간헐적으로 loki-read 컴포넌트가 죽으면서 로그 조회가 불가해지는 상황이 발생했습니다. 이에 로키 구성을 확인해보니 deploymentMode 가 SimpleScalableDistributed 로, 보통 SSD 에서 Distributed 로 마이그레이션 하기 위한 모드로 올라가 있는 것을 확인할 수 있었습니다. 이 모드에서는 SSD 와 Distributed 컴포넌트들이 모두 올라가있지만 SSD 모드로 동작하여 Distributed 컴포넌트들은 리소스만 크게 점유하고 실질적으로는 사용하지 않는 상황이었습니다.앞으로 Datadog 대신 사용할 것을 고려하면 사용량이 늘 것으로 예상되어, 안정성을 높이기 위해 Distributed 모드로 전환 작업을 진행하였습니다. 각 컴포넌..