Kubernetes (14) - DaemonSet으로 노드별 Pod 실행하기
1. DaemonSet이 필요한 이유 Deployment는 원하는 개수의 Pod를 실행하지만, 어느 노드에 Pod가 배치될지는 스케줄러가 결정한다. 반면 DaemonSet은 선택된 각 노드에 Pod 복제본 하나씩 이 실행되도록 보장하는 워크로드 리소스다. 클러스터에 새…
1. DaemonSet이 필요한 이유 Deployment는 원하는 개수의 Pod를 실행하지만, 어느 노드에 Pod가 배치될지는 스케줄러가 결정한다. 반면 DaemonSet은 선택된 각 노드에 Pod 복제본 하나씩 이 실행되도록 보장하는 워크로드 리소스다. 클러스터에 새…
1. Deployment란? Deployment는 상태를 유지하지 않는 애플리케이션을 선언적으로 배포하고 업데이트하기 위한 워크로드 리소스다. 원하는 Pod 템플릿과 복제본 수를 선언하면 Deployment가 ReplicaSet을 만들고, ReplicaSet이 실제 P…
Pod는 노드 장애, 애플리케이션 오류, 실수로 인한 삭제처럼 여러 이유로 사라질 수 있다. ReplicaSet은 지정한 수의 Pod가 계속 실행되도록 유지 하는 컨트롤러다. Pod 수가 부족하면 새 Pod를 만들고, 많으면 일부 Pod를 제거한다. 이번 글에서는 NG…
Pod를 직접 여러 개 만들면 Pod 하나가 삭제되거나 노드 장애로 사라졌을 때 원하는 개수를 직접 다시 맞춰야 한다. ReplicationController는 선언한 수만큼 같은 Pod가 실행되도록 감시하고, 부족하면 새 Pod를 만들어 원하는 상태를 유지한다. 이번…
지금까지는 Pod를 직접 만들고 실행 설정, 상태 점검, 자원 요청량을 지정했다. 하지만 직접 만든 Pod가 삭제되면 Kubernetes가 같은 Pod를 자동으로 새로 만들지는 않는다. 애플리케이션을 지속해서 운영하려면 현재 상태를 관찰하고 원하는 상태로 되돌리는 관리…
여러 Pod가 하나의 노드에서 함께 실행되면 CPU와 메모리를 무제한으로 사용하려는 컨테이너가 다른 애플리케이션의 실행을 방해할 수 있다. Kubernetes는 컨테이너의 resources.requests 와 resources.limits 로 필요한 자원과 사용할 수…
컨테이너 프로세스가 실행 중이라는 사실만으로 애플리케이션이 요청을 정상 처리한다는 보장은 없다. 교착 상태에 빠졌거나, 데이터베이스 연결을 기다리고 있거나, 초기 캐시를 아직 불러오는 중일 수 있다. Kubernetes Probe는 kubelet이 컨테이너 상태를 주기…
Pod가 시작될 때 애플리케이션 컨테이너만 바로 실행되는 것은 아니다. 필요한 네트워크와 볼륨을 준비한 뒤, 애플리케이션 실행 전의 작업이 있다면 Init Container가 이를 먼저 처리한다. 이번 글에서는 Pod 명세에 직접 작성하는 Init Container와…
1. 개요 Codex를 IDE와 나란히 사용하면서도 에이전트가 IDE 설정을 제대로 읽지 못하고, 내가 지금 보고 있는 파일이 무엇인지도 모르는 듯한 답변을 할 때가 있었다. 그래서 매번 파일 경로와 현재 선택한 코드, 수정하려는 위치를 프롬프트에 다시 적어야 했다.…
컨테이너 이미지는 여러 환경에서 같은 방식으로 재사용하고, 실행 환경마다 달라지는 값은 Pod 설정으로 분리하는 편이 좋다. Kubernetes의 환경 변수는 애플리케이션의 주소, 실행 모드, 기능 플래그처럼 컨테이너 시작 시 전달할 값을 선언하는 기본적인 방법이다.…