반응형
1. Kubernetes 클러스터 계층 구조쿠버네티스로 시스템을 구축하면 어떤 모습이 나타날까요? 이는 곧 하나의 클러스터가 될 것이고, 클러스터는 여러 대의 컴퓨터로 구성되어 있을 테며, 컴퓨터마다 상이한 애플리케이션이 올라갈 것입니다. 기능이 비슷한 애플리케이션끼리, 또는 역할이 비슷한 컴퓨터들을 그룹 지어 제어/관리하기도 할 것이구요. 추상적으로 설명하긴 했지만, 쿠버네티스의 시스템 모델은 ‘클러스터-PC(또는 노드)-애플리케이션’의 계층 구조로 그릴 수 있습니다. 아래 도식처럼 말이죠. 여기서 알 수 있는 점은,클러스터 내 PC는 Master/Worker Node 두 종류로 구분PC(노드)마다 쿠버네티스 오브젝트를 가지고 있고, 특히 Worker Node는 ‘Pod’라는 엔티티를 관리Pod 안에 ..
Kubernetes의 정의와 도입 취지마이크로 서비스 아키텍쳐가 성행하면서 하나의 시스템을 구성하는 독립적인 애플리케이션의 수는 많아지고, 컨테이너들의 상호 관계는 좀 더 복잡해졌습니다. 이로 인해 높아진 서비스 운영 난이도를 해소하고자 ‘자동화 프로세스’를 도입하여 체계적인 컨테이너 관리 및 조율을 돕는 기술들이 개발되어 왔는데요. 이런 기술을 설명하기 위해 컨테이너 오케스트레이션(Container Orchestration)이라는 용어가 등장하였습니다. Kubernetes(줄여서 k8s)는 대표적인 컨테이너 오케스트레이션 툴입니다. 자동화된 배포, 스케일링, 장애 복구 등 필수적인 오케스트레이션 기능을 비롯하여 단일 서버 급을 뛰어넘는 클러스터 전반에 탄력적인 운영을 수행해는 프레임워크로 많은 인기를 ..
1. Docker Stack Docker Stack = Swarm을 파일(yaml) 레벨에서 관리하는 기능 Docker Swarm 클러스터의 초기 구축은 여러모로 귀찮은 작업들을 수반합니다. 터미널에서 직접 입력해야 하는 docker swarm/service ~ 명령어도 많구요. Swarm뿐만 아니라, 단일 애플리케이션(ex., nginx)를 Docker 환경에 띄울 때도 마찬가지였습니다. 하지만 docker-compose라는 기능 덕에 여러 컨테이너를 하나의 설정 파일(yaml)에 정의해두고 여러 번 반복적으로 돌려 쓸 수 있었죠. 마찬가지로, Docker service에 관한 모든 요소를 yaml 파일에 담아 관리할 수 있는 ‘docker stack‘ 이라는 기능이 존재합니다. 각 Service*를 ..
Docker Swarm 구축 시에 가상머신으로 노드를 띄우고자 한다면 ‘Docker-Machine’을 활용해보는 것도 좋은 옵션입니다. Docker-Machine은 가볍고 최적화된 OS 이미지로 Swarm 노드들을 생성하고 클러스터 운영/관리를 돕는 커맨드-라인 기반의 플러그인입니다. 사전 준비요소 Docker 서비스를 구동시키는 Docker Engine과 가상머신 생성을 위한 드라이버를 제공하는 VirtualBox나 VMware와 같은 도구가 미리 설치되어 있어야 합니다. Docker Engine: https://docs.docker.com/engine/install/ Virtualbox: https://www.virtualbox.org/wiki/Downloads Install Docker Engine..
1. 사전 준비물 Docker Swarm으로 클러스터를 운영하기 위해서 다음과 같은 요소들이 필요합니다. 2개 이상의 PC Docker Swarm은 기본 Docker 시스템과 달리, 멀티 노드로 확장하는 클러스터 운영 프레임워크입니다. 따라서 호스트 머신 하나로는 구축이 의미가 없으며, 둘 이상의 PC를 배치하고 통신을 열어주던지, 또는 다수의 PC를 운영할 여력이 안 된다면 가상머신을 이용하는게 좋습니다. 가상머신으로 클러스터를 구성하고자 한다면 Vmware/VirtualBox*로 비어 있는 상태의 Linux를 미리 준비해두면 됩니다. 좀 더 간결한 가상머신 구축을 원한다면 *Docker Machine(지금은 더 이상 패치가 없다고 하네요 😪)을 활용하는 방법도 있으니, 이와 관련해서는 바로 다음 포스..
1. 스케일업에 따른 컨테이너 운용 방식 변화 Docker로 이제 막 컨테이너들을 다뤘을 때는 모든 애플리케이션을 하나의 호스트(localhost) 머신 안에서 서비스하였습니다. 그러나 단순 실습/테스트 수준을 넘어 Netflix나 여타 다른 웹 플랫폼 수준의 서비스로 나아가기 위해서는, 단일 호스트가 감당할 수 있는 시스템 자원 및 트래픽 양, 이용자 수를 훨씬 초월하는 수준의 거대한 시스템을 구상해야만 합니다. 당연히 컨테이너도 수십, 수백, 정말 많게는 수천 개가 필요해지겠죠. 여러 대의 PC 또는 서버 각각에 역할을 부여하고 컨테이너를 분산시켜 서비스를 효율적으로 운용해야할 때인 겁니다. 그러나 Docker 자체만으로 전체 시스템을 구축하려다보면 다양한 문제들을 마주칠 수 밖에 없습니다. 컨테이너..