본문 바로가기
728x90

[DevOps]36

kubernetes - Volumes 쿠버네티스 볼륨의 이해 쿠버네티스에서의 볼륨은 도커의 볼륨과 같다. 도커에서 볼륨의 역할은 컨테이너가 생명 주기를 넘겨 사라지거나, 문제가 생겨 중단이 됐을 때 컨테이너를 삭제해도 컨테이너에서 다루는 데이터는 별도로 저장하여 다른 컨테이너에서도 액세스 할 수 있게 하는 것이다. 쿠버네티스 역시 마찬가지이며 컨테이너에서 파드(pod)와 클러스터(Cluster)로 그 범위를 확장하여 생각하면 된다. 비영구 볼륨(Non-Persistent Volumes) 임시 볼륨이라고도 불린다. 파드가 실행되는 동안에만 존재하는 임시 스토리지 솔루션이다. 파드가 종료되면 모든 데이터가 손실된다. 동일한 파드 내의 컨테이너 간 파일 및 데이터를 공유하거나 단기 작업에 사용된다. EmptyDir 쿠버네티스에서 사용할 수 있는 .. 2023. 7. 30.
kubernetes - 명령적 접근 방식과 선언적 접근 방식 명령적 접근 방식과 선언적 접근 방식 사용자가 쿠버네티스와 상호 작용할 수 있는 두 가지 기본 적인 접근 방식이다. 명령적 접근 방식 사용자가 쿠버네티스에게 개별 명령어를 통해 명령을 직접 내린다. 개별적으로 명령을 내리기 때문에 실수가 있을 확률이 높다. 빠른 일회성 작업, 임시 작업, 테스트 작업에 유용하지만 복잡한 시나리오의 구축을 위해서는 반복성과 확장성이 부족하여 사용하기 힘들다. 선언적 접근 방식 yaml 파일을 활용해 쿠버네티스의 클러스터 상태를 정의하여 명령을 내리는 방식이다. 반복성과 확장성을 통한 구성 관리의 용이함으로 쿠버네티스에서 컨테이너화된 애플리케이션을 관리할 때 일관성을 보장하고 효과적으로 협업할 수 있게 한다. nginx 웹 서버 deployment 객체 만들기 명령적 접근 .. 2023. 7. 19.
kubernetes - pod & deployment Pod 쿠버네티스에서 다루는 가장 작은 유닛이다. 파드는 컨테이너를 보유하고 있고, 쿠버네티스는 이러한 파드와 컨테이너를 관리한다. 파드는 하나 이상의 컨테이너를 가진다. 파드는 컨테이너에서 활용하는 볼륨과 같은 공유 리소스 역시 가지고 있다. 클러스터 외부에서도 파드와 통신할 수 있다. 파드는 컨테이너와 같이 임시적이며 제거하거나 교체하면 모든 상태를 잃는다. deployment 개발자는 쿠버네티스에게 파드를 자동으로 생성, 제거, 교체하기를 지시할 수 있다. 이는 쿠버네티스 사용의 핵심 아이디어이다. 개발자는 수동으로 pod 객체를 생성하여 특정 워커 노드에 할당하지 않다. 그럴 거면 쿠버네티스를 쓸 이유가 없다. 대신 deployment 객체를 생성한다. deployment 객체에게 생성하고 관리해.. 2023. 7. 17.
kubernetes - Service 객체에 대해 알아보고 외부에 파드를 노출시켜보기 📌 Service 객체 클러스터의 파드를 다른 파드(pod)에 노출시키는 역할을 한다. 아예 클러스터 외부에 파드를 노출시키기 위해서도 필요하다. 파드를 그룹화하고 공유 주소나 ip를 제공한다. 💡 Service 객체가 없다면? 서비스 객체는 파드를 외부 네트워크에 노출시키고 외부와의 통신을 관리하는 역할을 한다. 파드는 고유한 IP 주소를 가지고 있지만, 이 IP 주소는 클러스터 내부에서만 유효하며 외부에서 접근할 수 없다. 또한, 파드는 지속적이지 않다. 언제든지 사라질 수 있다. 기본적으로 일회성의 목적이 크기 때문이다. 만약 기존 파드가 사라지고 새로운 파드가 생겨난다면 파드에 접근할 수 있는 IP 주소 역시 달라지게 된다. 서비스 객체가 없다면 쿠버네티스 내부의 파드는 외부와 직접적으로 통신할 .. 2023. 7. 14.
kubernetes - minikube를 이용하여 간단한 로컬 테스트 진행해보기 Minikube란? 단일 노드의 Kubernetes 클러스터를 컴퓨터에서 로컬로 실행할 수 있게 해주는 도구이다. 개발 및 테스트 목적으로 Kubernetes 클러스터를 설정하는 프로세스를 단순화한다. 로컬 시스템에 경량의 가상화 환경을 생성하고 해당 환경 내에서 단일 노드 Kubernetes 클러스터를 실행한다. 전체 규모의 클러스터에 액세스하지 않고도 컨테이너 배포 및 관리, 네트워킹 구성, 다양한 Kubernetes 기능 테스트를 실험할 수 있다. 이 클러스터에는 API 서버, 스케줄러 및 컨테이너 런타임과 같은 Kubernetes의 모든 필수 구성 요소가 포함된다. 개발자는 프로덕션 Kubernetes 클러스터와 매우 유사한 환경에서 애플리케이션과 서비스를 테스트할 수 있다. 또한 로컬 Kuber.. 2023. 7. 12.
쿠버네티스의 핵심 개념과 아키텍처 파드(Pod) 컨테이너를 관리하는 단위이다. 쿠버네티스 세계에서 가장 작은 단위라고 할 수 있다. 컨테이너를 실행할 책임을 가지고 있다. 컨테이너를 감싸는 포장지라고 생각하자. 파드는 트래픽의 증감에 따라 쿠버네티스에 의해 사용 가능한 모든 워커 노드로 자동 배포된다. 노드(Node) 클러스터와 통신하거나, 클러스터 내에서 통신하는 물리적인 머신(PC), 가상 머신(EC2 등)을 말한다. 하나 또는 여러 개의 파드를 호스팅 하는 특정 하드웨어 용량을 가진다. 워커 노드(Worker Node) 컨테이너를 실행하는 머신이다. 특정 양의 CPU와 메모리가 있는 컴퓨터이며, 이 머신에서 파드를 실행한다. 예를 들면 AWS의 EC2 인스턴스가 워커 노드가 되는 것이다. 하나의 워커 노드에서 둘 이상의 파드를 실.. 2023. 7. 11.
쿠버네티스(Kubernetes)란 무엇인가? 💡 이 글은 도커를 모르면 이해하기 힘들 것이다. 쿠버네티스(Kubernetes) 컨테이너화된 애플리케이션의 배포, 확장, 관리를 자동화하기 위한 오픈 소스 시스템이다. 단일 소프트웨어가 아닌 시스템이다. 컨테이너 배포를 도와주는 프레임워크이며, 도구 및 작업 방법의 모음이라고 말할 수 있다. 그런데 이렇게만 설명하면 잘 와닿지 않는다. 그래서 도커에서 쿠버네티스 없이 컨테이너 배포를 어떻게 하는지를 생각해 보자. 도커 컨테이너의 수동 배포 로컬에서 작업을 끝내고 수동으로 AWS에 배포하는 상황을 생각해 보자. 먼저 AWS에서 생성 가능한 가상머신인 EC2 서비스에서 인스턴스를 생성한다. 인스턴스 내부에 들어가 도커를 설치하고 컨테이너를 실행한다. 이는 아주 기본적인 배포 방법이다. 그러나, 이 방법은 .. 2023. 7. 9.
Docker Compose 정리 Docker Compose Docker Compose는 여러 개의 Docker container를 정의하고 공유하는 도구이다. 각 container는 서비스로 구성되어 하나 이상의 네트워크와 볼륨으로 연결된다. Docker Compose를 이용하여 개발 환경을 손쉽게 구성하고 빠른 테스트를 경험할 수 있다. 위 사진처럼 한 번에 여러 이미지를 빌드하고 여러 컨테이너를 동작시킬 수 있다. 컨테이너 구성을 파일 하나로 쉽게 만들 수 있으므로 단일 컨테이너일 때에도 자주 사용된다. 다중 컨테이너의 유지보수 및 관리가 수월해진다. Dockerfile을 대체하지는 않는다. 개별 컨테이너의 -d, --rm은 디폴트임으로 따로 설정하지 않아도 된다. 컴포즈 파일에 특정된 모든 서비스에 대해 새 환경을 자동으로 생성.. 2023. 7. 8.
728x90