1. 파드 IP만으로 통신할 때의 한계 쿠버네티스에서 파드에 직접 접근하려면 kubectl describe로 파드 IP를 확인한 뒤 그 IP로 접속하면 된다. 이 방식은 클러스터 내부에서 동작 여부를 빠르게 확인할 때만 사용이 가능하다. 파드 IP는 영속적이지 않다. 파드가 재시작되거나 다른 노드로 재스케줄링되는 순간 새 IP를 할당받으므로, 한 번 확인한 IP가 무효가 될 수 있다. 또한 여러 디플로이먼트를 하나의 애플리케이션으로 엮을 때 서로의 파드 IP를 미리 알 방법이 없다. 예를 들어 프론트 파드에서 백엔드 파드를 호출하려
디플로이먼트: 레플리카셋의 상위 오브젝트 실제 운영 환경에서 레플리카셋을 YAML로 직접 정의하는 경우는 거의 없다. 대신 디플로이먼트를 YAML에 정의하고, 디플로이먼트가 레플리카셋을 생성, 교체, 삭제한다. 디플로이먼트는 레플리카셋의 상위 오브젝트로, 하나의 디플로이먼트는 시점에 따라 여러 개의 레플리카셋을 가질 수 있다. 디플로이먼트가 필요한 이유는 새 버전으로의 전환과 이전 버전으로의 복귀를 레플리카셋 단독으로는 처리할 수 없기 때문이다. 레플리카셋과 파드 레플리카셋과 디플로이먼트의 YAML은 거의 동일하다. kind만 Re
1. 레플리카셋이 필요한 이유 마이크로서비스 환경에서는 같은 역할을 하는 파드를 여러 개 동시에 운영해야 한다. 트래픽을 나눠 받기 위해서이기도 하고, 일부 인스턴스가 실패해도 나머지가 요청을 계속 처리하도록 가용성을 확보하기 위해서이기도 하다. 따라서 쿠버네티스에서 실제로 다루는 단위는 단일 파드가 아니라 동일한 스펙의 파드 N개가 된다. 이를 직접 정의하기 위해 YAML 매니페스트 안에서 ---를 구분자로 두어 동일한 파드 여러 개를 한 번의 kubectl apply로 생성할 수도 있지만, 이는 비효율적인 방법이다. 또한 파드가
1. Pod란? Pod는 쿠버네티스가 생성하고 관리하는 가장 작은 배포 단위이다. 하나의 Pod 안에 있는 컨테이너들은 다음을 공유한다. 네트워크 네임스페이스: 같은 IP를 갖고 `localhost`로 서로 통신한다. 같은 포트를 두 컨테이너가 동시에 점유할 수는 없다. 스토리지 볼륨: Pod에 정의된 볼륨을 모든 컨테이너가 마운트할 수 있다. 생명 주기와 스케줄링 단위: 항상 같은 노드에 함께 스케줄링되고, 시작과 종료 또한 함께 이뤄진다. Pod에는 컨테이너가 하나만 있을 수도, 여러 개가 있을 수도 있다. 보통은 1 Pod =
1. 쿠버네티스(Kubernetes, k8s)란? 쿠버네티스는 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하는 오픈소스 오케스트레이션 플랫폼이다. 2014년 구글에 의해 공개되었으며 현재는 CNCF에 의해 관리되고 있다. 쿠버네티스를 사용하면 컨테이너를 여러 서버에 분산 배포하거나 서버 장애 시 자동 복구, 트래픽에 따른 자동 확장 등이 가능해진다. *k8s라는 약어는 'K'와 's' 사이에 8개의 글자가 있다는 의미에서 유래되었다. 2. 클러스터(Cluster) 클러스터는 컨테이너화된 애플리케이션을 실행하는 노드(Nod