2025/04 7

[Kubernetes] Pod의 상태와 Lifecycle

Pod의 Lifecycle과 상태 대해 정리한 문서 (kubernetes 1.32 기준) Pod 상태Pod는 Kubernets에서의 최소 배포 단위로, 하나의 Pod 내부에 여러 컨테이너를 포함할 수 있다. 따라서 Pod의 상태는 Pod 내 모든 컨테이너의 상태에 의해 결정된다. Pod의 상태 정보는 Pod 조회 시 STATUS 값에서 확인할 수 있다.NAMESPACE NAME READY STATUS RESTARTS AGEdefault pod 1/1 Running 0 2d9h 여기서의 STATUS는 사용자가 알기 쉽도록 나타내는 필드이며, 실제로 Kubernetes에서 Pod가 갖는 상태는 PodStatus 객체의 필드인 phase의 값으로 ..

인프라 2025.04.29

[책] 신들은 죽임 당하지 않을 것이다 - 켄 리우

책을 구입한지는 꽤 됐는데 다 읽은 건 얼마 전이었다. 읽고 나서는 진작 읽을 걸 그랬다고 후회 될 정도로 취향에 맞는 책이었다. 책의 장르는 SF이고 여러 단편으로 이루어져 있다. 그 중에서도 '신들은 목줄을 차지 않을 것이다', '신들은 순순히 죽지 않을 것이다', '신들은 헛되이 죽지 않았다'라는 단편 연작이 메인 이야기인 것 같다. 하지만 책에 수록된 각 단편들 모두 저마다의 특색이 있어서 어떤 게 더 재밌다고 우열을 가릴 수 없을 정도로 단편 하나하나가 임팩트 있었다. 그래도 좀 더 많이 생각 나는 단편을 뽑자면 첫 번째로 수록된 단편 '루프 속에서'다. 읽는 내내 공상 속 이야기라기 보단 현실에 가까운 이야기라고 생각했다. 해당 단편 속 사회에서는 사람이 아니라 드론이 전쟁을 대신한다. 물..

[Karpenter] Failed to watch *v1.Lease: failed to list *v1.Lease: leases.coordination.k8s.io is forbidden:

아래 트러블슈팅을 겪은 지는 좀 시간이 지났지만 기록을 위해 남겨본다. Karpenter 버전 1.0.0에서 1.3.2로 업그레이드 후 프로비저닝 테스트를 하는데 아래와 같은 에러가 떴다. {"level":"ERROR"... "logger":"controller","message":"k8s.io/client-go@v0.30.3/tools/cache/reflector.go:232: Failed to watch *v1.Lease: failed to list *v1.Lease: leases.coordination.k8s.io is forbidden: User \"system:serviceaccount:...\" cannot list resource \"leases\" in API group \"coordina..

Trouble Shooting 2025.04.24

[모델] 문항반응이론(IRT) with Python code

문항반응이론(IRT)문항반응이론(Item Response Theory)은 문항들에 대한 응답에 근거해 피험자의 특성이나 문항의 난이도, 변별도를 측정하기 위한 검사이론이다. 즉, 개인의 능력과 문항의 특성 사이의 관계를 수학적 모델로 설명 및 예측하려는 이론이라고 할 수 있다. 아래는 IRT에서 쓰이는 모수(파라미터)들이다.응답자의 능력(θ): 응답자가 가진 특정 능력이나 지식 수준을 나타내는 값난이도(b): 문항을 맞추기 위해 필요한 능력 수준변별도(a): 문항이 응답자의 능력 수준을 구별하는 정도추측도(c): 찍었을 때 정답을 맞출 확률 문항반응함수(IRF)IRT의 주요 모델은 아래와 같은데, 모델에 어떤 파라미터를 고려하는지에 따라 종류가 나누어지게 된다. 여기에서 수식의 P(θ)는 능력이 θ인 사..

머신러닝 2025.04.23

[Spark] Apache Spark 구조 및 Job 실행 과정

Apache Spark Ecosystem, Runtime Architecture, Application LifeCycle에 관해 정리한 문서 Apache Spark의 등장 배경Spark의 등장 배경을 설명하기 위해선, 먼저 Hadoop의 MapReduce에 대한 이야기를 할 필요가 있다. Hadoop은 하나의 컴퓨터에서 처리하기 어려운 대용량 데이터를, 여러 컴퓨터에 분산 저장 및 처리하여 빠르게 작업하기 위한 플랫폼이다. 그리고 Hadoop에서 데이터를 처리하는 방법이 바로 MapReduce 이다. MapReduce 처리 과정을 이해하기 위해 아래 그림을 보자.위 그림은 IBM에서 제공한 예제를 가져온 것으로, 데이터는 아래와 같다.Input 데이터: 각 도시 명, 도시의 일별 기온 값에 대한 데이터 ..

[Airflow] Airflow on Kubernetes(KubernetesExecutor)

Airflow는 Executor의 구성에 따라 Airflow 컴포넌트나 Task 실행 방식이 달라지는데,이 글에서는 KubernetesExecutor를 중점으로 정리를 해보려고 한다. 그러기 위해 우선 널리 사용되는 CeleryExecutor를 간단히 살펴보자. 아래는 CeleryExecutor의 전체적인 아키텍처이다. CeleryExecutor 방식에서는 Result Backend와 Queue Broker라는 컴포넌트가 보이는데, 이들은 각각 아래와 같은 역할을 수행한다.Queue Broker - task를 저장하는 역할Result backend - task의 상태를 저장하는 역할 아래 시퀀스 다이어그램을 보면, 각각이 어떤 일을 하는 건지 좀 더 이해가 쉽다.queue broker는 task들의 대기..

[Karpenter] Karpenter Distruption

아래는 Karpenter 노드의 중단에 대해 정리한 내용으로, 본문 내용은 Karpenter v1.0.0 기준으로 작성되었다.Karpenter Distruption 종류수동# Node 제거kubectl delete node $NODE_NAME# Nodeclaim 제거kubectl delete nodeclaim $NODECLAIM_NAME 자동(Automated Graceful)ConsolidationDeletionReplaceDrift 자동(Automated Forceful)ExpirationInterruption 수동은 관리자(사람이)가 node나 nodeclaim을 직접 제거하는 것을 말하는 것이다.자동 중단에는 여러 세부 종류가 있는데, 크게 Automated Graceful과 Forceful 두 ..

인프라 2025.04.09