푸른영혼의 별 | Tech Blog
Java Backend Engineer의 기술 블로그입니다.
Spring Boot, MSA, JPA, Kafka, Kubernetes 등 실무 경험을 공유합니다.
주요 프로젝트: Settlement MSA · ASAT · GitHub
Posts (총 96편 · 1 / 10 페이지)
-
ping 안 되면 서버 죽었다? — 새벽 3시 디버그가 가르쳐준 ICMP·TCP 기초
“ping 안 되니까 서버 죽었네요.”
“그런데
curl은 200 응답 오는데요.”“…?”
-
Spring AOP — 무대 감독의 시선으로: 면접에서 점수 따는 답변과, 시니어가 *현장에서 다친 흔적*
연극 무대를 상상해보세요. 배우(핵심 로직)는 연기에만 집중해야 합니다. 만약 배우가 직접 조명을 켜고, 배경 음악을 틀고, 퇴장할 때 막을 내린다면 연극이 엉망이 될 것입니다. AOP 는 무대 감독(Aspect)처럼, 배우가 언제 등장하고 퇴장하는지(Pointcut)를 지켜보다가, 적절한 타이밍에 조명과 음향(Advice)을 틀어주는 역할을 합니다.
-
K3s 3노드 etcd HA 복구 — cluster-reset 후 노드 재가입 4단계 (단순 db 삭제만으론 안 됨)
홈랩 K3s 클러스터 (3 control-plane + 2 worker, embedded etcd HA) 가 새벽 작업 cascade 끝에 죽었다. 두 control-plane 이
"bootstrap data already found and encrypted with different token"에러로 부팅 실패 루프. 살아남은 1 노드의 API 도 etcd quorum 없어서 timeout. -
K3s logs-es-cold 가 4 시간 Pending 이던 이유 — nodeSelector 만 있고 toleration 이 빠진 함정
K3s 홈랩의 logs-es-cold-0 (Elasticsearch cold tier) 가 4 시간 32 분 Pending 으로 떠있었다. PVC 도 bound 되어 있고, target node (solomon) 는 Ready 였다. 그런데도 scheduler 가 거부.
-
K3s + ufw — Ubuntu 노드 재부팅 후 cluster overlay 가 죽는 함정
새벽 3시. K3s 홈랩에서 8개 *-prod 앱 pod 가 일제히 CrashLoopBackOff. 모두
SocketTimeoutException— DB 연결 timeout. 모든 postgres 가 ilwon 노드에 있고, app 들은 louise 에 있다. louise → ilwon 의 pod-to-pod overlay 가 죽었다는 뜻. -
bitnami/kubectl 이 Docker Hub 에서 사라진 사건 + *미봉책의 수명* — pod-restart-cleanup CronJob 폐기 회고
pod-restart-cleanup이라는 CronJob 이ImagePullBackOff였다. 5월 초까지는 잘 도는 CronJob 이었는데 어느 날부터 이미지를 찾을 수 없다고 한다. 디버깅을 시작하기 직전에 잠시 멈추고 '’이 CronJob 이 왜 존재했지?’’ 라고 물어보니, 그 존재 이유가 이미 사라졌다는 사실을 깨달았다. 수정 이 아니라 폐기 가 정답인 케이스였다. -
노드 IP 가 DHCP 로 매번 바뀐다 — NetworkManager 로 *유선/무선 둘 다 같은 정적 IP* 박기 + k3s --node-ip 명시 + autoconnect-priority 페일오버
홈랩 노드 한 대(david)가 매일 다른 IP 로 깨어났다. 어제 .107, 오늘 .113, 다음에 보니 .116. DHCP 가 풀에서 잘못 골라주는 게 아니라 유선·무선 두 인터페이스가 동시에 DHCP 로 받아서 그 중 하나가 올라온다. 사용자가 '’두 개 다 .113 으로 고정해’’ 라고 했을 때, 단순히 “yes / no” 가 아니라 '’두 개의 인터페이스에 같은 정적 IP, 어떻게 안전하게’’ 를 풀어야 하는 문제가 됐다.
-
kubeconfig 가 가리킨 control-plane 이 죽었다 + etcd 가 *죽은 멤버에게 raft heartbeat* 를 보내느라 클러스터가 2초씩 느려졌다
kubectl get nodes가dial tcp 192.168.219.110:6443: connect: host is down으로 죽었다. 어제 살려놨던 클러스터가 다시 안 보였다. 두 시간 뒤 알아낸 것: 클러스터는 멀쩡했다. 단지 내 kubeconfig 가 죽은 노드 한 대를 가리키고 있었을 뿐이었고, 그 노드를 갈아끼고 나니 새 문제가 보였다 — 남은 etcd 멤버 한 대가 ghost 였고, 살아있는 두 멤버가 ghost 에게 raft heartbeat 보내려다 버퍼가 가득 차서 클러스터 전체가 2초씩 느려지고 있었다. -
운영 K3s 홈랩 한 장 — 39 ArgoCD App · 5 노드 · 영어 용어 사전 포함
홈랩 K3s 클러스터에 39개 ArgoCD 애플리케이션이 돌고 있다. 어느 날 누가 “이거 한 장으로 보여줘” 라고 하면 그릴 수 있는 그림 — 그리고 그 그림에 박힌 영어 용어들 을 같이 풀어쓴 글.
-
같은 주에 인프라랑 제품을 둘 다 reshape 한 이야기 — 노드 빼고, 미션을 다시 정의하고
오늘 두 가지가 동시에 일어났다.