Kubernetes (5) - Pod 실행 설정과 Multi-Container 디자인 패턴
Pod는 하나 이상의 컨테이너를 함께 실행하는 Kubernetes의 최소 배포 단위다. 하지만 컨테이너를 한 Pod에 넣는다고 모두 같은 방식으로 협력하는 것은 아니다. 애플리케이션의 생명주기, 네트워크, 데이터 공유가 밀접할 때만 Multi Container Pod를…
Pod는 하나 이상의 컨테이너를 함께 실행하는 Kubernetes의 최소 배포 단위다. 하지만 컨테이너를 한 Pod에 넣는다고 모두 같은 방식으로 협력하는 것은 아니다. 애플리케이션의 생명주기, 네트워크, 데이터 공유가 밀접할 때만 Multi Container Pod를…
Docker Compose는 한 대의 호스트에서 여러 컨테이너를 함께 실행하고 관리하기에 편리하다. 그러나 서비스 복제본을 여러 서버에 나누어 배치하고, 서버나 컨테이너에 장애가 나도 원하는 개수를 유지하며, 무중단에 가깝게 버전을 교체하려면 클러스터 수준의 관리가 필…
앞에서 Pod를 만들고 조회할 때는 리소스 이름을 사용했다. 하지만 같은 애플리케이션의 Pod가 여러 개로 늘어나거나 새 Pod로 교체되면 각각의 이름을 직접 관리하기 어렵다. Kubernetes는 Label로 리소스에 식별 정보를 붙이고, Selector로 조건에 맞…
Pod는 Kubernetes에서 컨테이너를 실행하는 가장 작은 배포 단위다. 간단한 웹 서버는 컨테이너 하나를 담은 Pod로 실행할 수 있고, 긴밀히 협력하는 컨테이너가 있다면 하나의 Pod에 함께 배치할 수도 있다. 이번 글에서는 Nginx 단일 컨테이너 Pod를 명…
Kubernetes에서 Namespace는 하나의 클러스터 안에서 리소스를 논리적으로 분리하는 단위다. 같은 이름의 Pod라도 서로 다른 Namespace에 만들 수 있어, 개발·운영 환경이나 팀별 리소스를 구분하는 데 유용하다. 이번 글에서는 Namespace 목록을…
Kubernetes 클러스터와 상호작용할 때 사용하는 기본 CLI가 kubectl 이다. 리소스의 상태를 조회하는 것부터 Pod와 Deployment 생성, 컨테이너 로그 확인, 내부 애플리케이션 접속까지 대부분의 작업을 kubectl 명령으로 수행한다. 이번 글에서는…
Dockerfile은 하나의 애플리케이션을 이미지로 패키징하는 데 적합하다. 하지만 웹 프론트엔드, 백엔드 API, 데이터베이스처럼 여러 컴포넌트로 구성된 애플리케이션을 실행하려면 각 컨테이너의 이미지, 포트, 환경 변수, 볼륨, 네트워크를 함께 관리해야 한다. Doc…
Kafka를 처음 접하면 Producer, Consumer, Broker, Topic, Partition 같은 용어가 한꺼번에 등장해 복잡하게 느껴진다. 이번 글에서는 주문 생성 이벤트를 예로 들어 각 개념이 어떻게 연결되는지 정리한다. 또한 Kafka 클러스터 내부의…
앞선 글에서는 Dockerfile의 주요 명령어와 이미지 빌드 방법을 정리했다. 이번 글에서는 빌드 환경과 실행 환경을 분리하는 멀티 스테이지 빌드(Multi stage build) 를 살펴본다. 멀티 스테이지 빌드를 사용하면 컴파일러, 패키지 관리자, 개발용 의존성처…
VS Code에서 Remote SSH로 Ubuntu 서버에 접속하려고 했지만 Permission denied (publickey) 오류가 발생했다. SSH 키의 passphrase 입력창까지 나타났기 때문에 키 파일 자체는 인식되는 것처럼 보였지만, 실제로는 설정된 개…