728x90
반응형




Kubernetes 개요

Kubernetes는 컨테이너를 쉽고 빠르게 배포/확장하고, 관리 또한 자동화해주는 오픈소스 플랫폼입니다. 대량의 컨테이너를 관리해주는 플랫폼을 통칭하는 말인 Container Ochestration중 하나죠. (약칭 : k8s)

Kubernetes를 처음 접하신 분들은 여기서 Container는 무엇이고, Container Ochestration가 뭔지도 궁금해하실 것 같습니다.
먼저, Container에 대해 짚고 넘어가겠습니다.

Container

Container는 애플리케이션 실행 시 필요한 모든 파일을 포함한 전체 실행(runtime) 환경에서 애플리케이션을 패키징하고 격리할 수 있는 기술입니다. 각 애플리케이션당 독립된 실행환경을 제공하기 때문에 애플리케이션간 영향도를 최소화하여 안정성을 확보할 수 있습니다.

또한, 하나의 application이 실행되는 각각의 Container들은 한 개의 VM내에서 서로 Host OS를 공유하기 때문에,
Container환경 배포 시에는 VM에 배포하는 것처럼 OS를 별도 배포하지 않아도 되고, alpine-linux 등과 같은 경량 OS를 활용하게 됩니다.
이를 통해 빠른 배포가 가능하여 확장성을 보장할 수 있습니다.

결론적으로 Container 기술을 활용하면,

  1. 애플리케이션간 독립된 환경을 보장받기 때문에 애플리케이션간 영향도 최소화를 통한 안정성
  2. 애플리케이션 배포 시, 별도 OS의 배포는 필요하지 않기 때문에 빠른 배포를 통한 확장성

위 두 가지 이점을 챙길 수가 있게 됩니다.

그렇다면... Container 기술의 원리가 무엇일까?

Container 기술은 아래 두 가지 linux 기능을 활용하게 됩니다.

  1. namespaces : 프로세스마다 독립적인 공간을 제공하고, 서로가 충돌하지 않게끔 namespaces를 만들어 프로세스를 실행시킬 수 있습니다.
  2. cgroups : 각 컨테이너가 공유 컴퓨팅자원에 대한 제어권을 가질 수 있도록 하는 리눅스 커널의 기능입니다.

본 글에서 Container 기술의 원리까지는 딥하게 다루지 않겠습니다.
자세한 내용은 아래 링크를 참고바랍니다.
https://tech.ssut.me/what-even-is-a-container/

Container Ochestration

Container Ochestration은 Container가 많아짐에 따라 발생하는 관리의 복잡성을 해소하기 위한 플랫폼들을 통칭하는 말입니다. 본 글에서 다룰 kubernetesDocker Swarm 등이 이에 해당합니다.

Container Ochestration은 기본적으로 아래와 같은 기능을 제공합니다.

  1. cluster : 관리자가 컨테이너 서버들을 cluster 단위로 추상화시켜 놓고, master 서버를 통해 해당 cluster 내부를 관리합니다.
  2. state : 특정 애플리케이션이 동일하게 실행되는 container의 갯수를 자동으로 유지시켜줍니다.
  3. scheduling : 여러 노드, 여러 컨테이너 서버에 어떤 프로그램이 있는지 확인한 후에 특정 프로그램을 적절한 공간에 넣어줍니다.
  4. Rollout Rollback : 자동 버전관리가 가능합니다.
  5. Service Discovery : 특정 컨테이너 서버의 정보(ex. host name 등)가 바뀌면 자동으로 확인하고 등록해주는 proxy가 있습니다.
  6. Volume : 데이터를 container 서버의 업/다운과 관계없이 영구히 관리하기 위해 별도 공간을 활용하여 container서버에 자동으로 연결시켜 줍니다.

kubernetes는 위 Container Ochestration의 특징을 모두 갖습니다.

이어서

다음 글에서 Kubernetes cluster에 대해 알아보겠습니다.

반응형

+ Recent posts