이제 K8s와 컨테이너 런타임 사이에 한단계 더 깊은 흐름을 살펴보겠습니다. 컨테이너 기술의 제일 아래 OS의 커널에서는 격리를 위한 chroot, cgroup, namespace 기술이 활용되고 있습니다. 이 Linux 커널 기술 위에 컨테이너 런타임이 실행되는 구조입니다. 초기 컨테이너에는 특별한 규격이나 런타임에 대한 표준화가 없다보니, Docker가 사실상의 컨테이너 표준을 자처했으며, CoreOS는 또 다른 규격으로 컨테이너 표준화를 추진하려 했었습니다 당시 다양한 타입의 컨테이너가 난립할 가능성이 점점 더 높아지자, 표준의 필요성이 대두되었습니다. 이 문제를 해결하기 위해 많은 플랫폼 기업들이 모여, 새로운 개방형 단체인 OCI(Open Container Initiative)를 구성하였고 컨테..
쿠버네티스는 이제 클라우드의 대표 기술로써, 다양한 생태계를 아우르고 있습니다. 다양한 생태계만큼이나 쿠버네티스의 기본 구성을 위한 조합들도 다양하며, 다양한 구성요소들의 흐름을 이해하는 것이 기술과 생태계의 이해에 많은 도움이 됩니다. 먼저 쿠버네티스의 뼈대를 이루는 운영체제인 Linux, 그리고 그 위에서 동작하는 Container Runtime, 컨테이너를 잘 사용할 수 있게 도와주는 Container Orchestration에 대한 기술의 흐름에 대해 알아 보겠습니다. 1. Linux K8s를 사용해보려고 할때, 제일 먼저 고민하는 부분이 어떤 OS에 구성을 할까입니다. 현재 대부분의 K8s를 구동하는 서버는 x86 기반의 LINUX가 대세를 이루고 있습니다. 과거 서버는 메인프레임 서버를 시작으..
Calico는 가상머신이나 컨테이너들을 위한 네트워킹, IP관리, 접근제어, 모니터링 등 다양한 네트워크 관련 기능을 제공하는 오픈소스 프로젝트로 주로 Tigera의 주도로 개발되고 있습니다. 다수의 K8s의 네트워크 서비스를 위한 CNI 플러그인들 중에서 현재 기준으로 가장 대중적인 선택지로 활용되고 있으며, 오픈스택이나 베어메탈, Windows 환경에서도 활용가능한 다재다능한 네트워크 솔루션입니다. Calico는 k8s의 Pod들에게 네트워크 기능을 제공하기 위해, 개별 Node에 다수의 컴포넌트를 설치합니다. 설치된 컴포넌트들은 Calico에서 제공하는 다양한 기능들에 대한 역할을 담당하며, 사용자의 설치 환경과 사용 목적에 따라 다양한 조합으로 이루어질 수 있습니다. 이 중 k8s에서 Pod간의 ..
K8s는 컨테이너를 그 자체로 관리하지 않고 여러개의 컨테이너를 묶어 또 하나의 Object 단위로 관리합니다. 이때, 여러개의 컨테이너가 묶여 있는 기본 관리 단위를 Pod라고 하며, K8s는 Pod 단위로 대부분의 작업을 처리합니다. 즉, Pod는 1개 이상의 컨테이너로 구성된 컨테이너의 집합이고, 하나의 Pod 안에는 여러개의 컨테이너가 존재합니다. 물론 Pod 안에 1개의 컨테이너로 구성하는 것도 가능합니다. 기본적으로 컨테이너들은 리눅스에서 제공하는 다양한 기본 관리 기능을 이용하여 컨테이너 운영환경을 제공합니다. 예를 들어, cgroup은 프로세스의 자원사용량을 제한하며, namespace는 프로세스의 격리된 환경을 제공합니다. 이 중 namespace는 하나의 시스템 내에서 다수의 독립된 공..