✔️ Kubernetes 구성 쿠버네티스는 크게 오브젝트(Object)와 오브젝트를 관리하는 컨트롤러(Controller)로 나눠져 있다. 쿠버네티스 오브젝트는 쿠버네티스 시스템에서 영속성을 가진다. 오브젝트를 생성하면 쿠버네티스는 원하는 상태를 보장하기 위해 지속적으로 작동한다. 쿠버네티스는 클러스터의 상태(Status)를 나타내기 위해 이 오브젝트를 이용한다. 거의 모든 쿠버네티스 오브젝트는 오브젝트 구성을 결정해주는 두개의 중첩된 오브젝트 필드인 status와 spec을 포함한다. status : 쿠버네티스 시스템과 컴포넌트에 의해 제공되고 업데이트된 오브젝트의 현재 상태를 설명 spec : 오브젝트의 특성으로 추구하는(Desired) 상태를 설명 컨트롤러는 status가 spec과 일치하도록 오브..
✔️ Workload란 ?! 워크로드란 쿠버네티스에서 구동되는 어플리케이션이다. 워크로드가 단일 구성 요소든 함게 작동하는 여러 구성 요소이든 상관없이 쿠버네티스에서는 Pod 세트 내에서 실행한다. 쿠버네티스 Pod에는 LifeCycle이 정의되어 있다. 예를 들어 클러스터에서 Pod가 실행 중에 그 Pod가 실행 중인 노드에 심각한 장애가 발생하면 해당 노드의 모든 Pod에 장애가 발생한다는 것을 의미한다. 노드가 나중에 정상 상태가 되더라도 복구하려면 새 Pod를 생성해야 한다. 그러나 Pod의 LifeCycle을 관리하기 위해 우리는 각 Pod를 직접 관리할 필요가 없다. 우리대신 Pod set을 관리하는 Workload Resources를 사용할 수 있다. ✔️ Workload Resources란..
AWS EKS 실습을 진행하면서 만났던 생소한 개념들을 정리하는 글. 하단 링크 글이 많은 도움이 되었다. [Kubernetes] 쿠버네티스 Pod 안녕하세요. 개발자 김모씨입니다. 쿠버네티스 시리즈를 이어가고 있죠. 혹시 이전 포스팅 '쿠버네티스 구조'를 아직 안 보신 분은 얼렁 다녀오세요~ artist-developer.tistory.com/31 안 artist-developer.tistory.com ✔️ Pod란 ? Pod란 쿠버네티스의 가장 기본적인 배포 단위이다. 마스터 노드에서는 워커 노드로 Pod를 전달하고 워커 노드에서는 Pod를 수행하는 구조이다. 한 개의 워커 노드에는 N개의 Pod들이 돌아가게 된다. 쿠버네티스는 컨테이너(Docker 등)를 개별적으로 배포하는 것이 아닌 Pod 안에 ..
들어가기 앞서 ✔️ 컨테이너 오케스트레이션(Container Orchestration)이란 ? 컨테이너 오케스트레이션이란 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 도구이다. 여러개의 서버에 컨테이너를 배포하고 운영하면서 서비스 간 연결을 쉽게 해주는 것이다. (서비스 디스커버리같은 기능을 이용) 서버마다 다른 이름을 짓고 개별적으로 관리하는 것이 아니라 Server 1, 2, 3, ...을 하나로 묶어 적당한 서버를 자동으로 선택해 어플리케이션을 배포하는 것이다. 부하가 생기면 컨테이너를 늘리고 일부 서버에 장애가 생기면 정상 동작 중인 서버에 다시 띄워 장애를 방지한다. 흔히 잘 알려진 오케스트레이션 툴로는 도커 스웜(Docker Swam), 쿠버네티스(Kubernetes), 아파치 메..
✔️ Docker(도커)란 ? 리눅스 컨테이너를 기반으로 하여 특정한 서비스를 패키징하고 배포하는데 유용한 오픈 플랫폼이다. 인프라에서 어플리케이션을 분리하고 컨테이너로 추상화시켜 SW를 빠르게 제공할 수 있다. 하나의 호스트 OS 안에서 여러 컨테이너의 라이프 사이클을 관리하고 어플리케이션을 오케스트레이트된 서비스로 배포할 수 있다. ✔️ Docker의 구성 요소 컨테이너를 만들기 위해서 필요한 3가지 요소는 다음과 같다. ① Dockerfile 컨테이너를 만들기 위한 설명서 (요리로 치면 레시피) Copy files - 어플리케이션을 구동하기위해 꼭 필요한 파일들은 무엇이 있는지 Install dependency - 어떤 프레임워크나 라이브러리를 사용해야 하는지 Set environment varia..
✔️ 컨테이너란 ? 컨테이너란 호스트 OS 상에 논리적인 구획을 만들고 어플리케이션을 작동시키기 위해 필요한 라이브러리나 어플리케이션 등을 하나로 모아 마치 별도의 서버인 것처럼 사용할 수 있게 만든 것이다. 개별 SW의 실행 환경을 독립적으로 운용할 수 있도록 다른 실행 환경과의 간섭을 막고 실행의 독립성을 확보해주는 운영체제 수준의 격리 기술을 말한다. 호스트 OS의 리소스를 논리적으로 분리시키고, 여러개의 컨테이너가 공유하며 사용한다. 컨테이너는 오버헤드가 적기 때문에 가볍고 고속으로 작동하는 것이 특징이다. ✔️ VM vs 컨테이너 VM (Virtual Machine) 공통적으로 하나의 서버가 있고 한 서버에는 HostOS (맥, 리눅스, 윈도우)가 올라간다. VM의 경우 호스트OS에 대해 VM을..