본문 바로가기

스터디/쿠버네티스

[쿠버네티스] 쿠버네티스 기초

728x90
반응형

쿠버네티스란

https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/

 

쿠버네티스란 무엇인가?

쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하

kubernetes.io

Open source container orchestration tool

쿠버네티스, 컨테이너, 도커 용어정리

컨테이너란, 우리가 구동하려는 애플리케이션을 실행할 수 있는 환경까지 감싸서, 어디서든 쉽게 실행할 수 있도록 해 주는 기술. PC에 프로그램을 설치할 때 특정 경로에 맞춰 설치를 해야 하거나, 내 컴퓨터에 필요한 옵션을 일일히 맞춰주느라 설치 과정에서 힘들었던 경험이 있을 것이다.
컨테이너는 이러한 환경까지 모두 포함하여 독립적으로 프로그램을 실행할 수 있도록 도와주는 기술이다.
컨테이너 환경을 묶어서 배포한 컨테이너 이미지라는 프로그램을 내려받아 구동하면 실행되기 때문에, 각종 설정 과정이 줄어 들어서 좀 더 편하게 사용할 수 있다. 컨테이너를 사용할 때 필요한 도구가 컨테이너 런타임이다.
컨테이너를 쉽게 내려받거나 공유하고 구동할 수 있도록 해주는 도구인데 종류도 여러 가지가 있다. 그중 가장 유명한 것이 도커.

쿠버네티스는 컨테이너 런타임을 통해 컨테이너를 다루는 도구.
쿠버네티스가 해 주는 일은 여러 서버(노드)에 컨테이너를 분산해서 배치하거나, 문제가 생긴 컨테이너를 교체하거나, 컨테이너가 사용할 비밀번호나 환경 설정을 관리하고 주입해 주는 일 등이다. 이것을 컨테이너 오케스트레이션이라고 한다.

반응형

애플리케이션 배포환경의 변화

1. Traditional Deployment(전통적 배포)
오래전부터 쓰이던 방식으로, 물리적인 컴퓨터 한 대에 하나의 OS를 깔고 여러 가지 프로그램을 설치하는 방식(PC 한 대에 윈도우를 하나 설치하고, 여러 가지 게임이나 워드프로세서 등을 깔아서 사용하는 것과 비슷한 방식)이다.
이 방식은 어떤 프로그램 동작이 다른 프로그램의 동작을 간섭하거나, 특정 프로그램이 성능을 독점할 경우 또 다른 프로그램의 성능이 떨어지는 단점이 있다.

2.
Virtualized Deployment(가상화 배포)
문제를 해결하기 위해 등장한 해법이 가상머신(Virtual Machine)을 기반으로 배포를 하는 방법이다.
중간에 위치한 하이퍼바이저는 하나의 시스템 상에서 가상 컴퓨터를 여러 개 구동할 수 있도록 해 주는 중간 계층을 의미한다. 그리고 App은 실행하고자 하는 프로그램, Bin/Library는 프로그램이 실행하는데 필요한 환경과 관련된 파일이다.
가상머신은 말 그대로 가상 컴퓨터입니다. 컴퓨터이기 때문에 가상머신에도 CPU, 메모리, 저장 장치 등을 개별적으로 할당할 수 있다. 하나의 컴퓨터 안에서 두 개의 가상화된 컴퓨터가 동작하기 때문에 프로그램 간에 서로 간섭을 일으키지 않게 된다.
또한 서버와 같이 다중화와 분산 처리가 중요한 시스템이라면 시스템 자원 상황에 따라 가상머신 개수를 늘리고 줄이는 것도 좀 더 유연하게 처리할 수 있다.
다만 이 방식이 전통적 배포 방식보다는 분명 효율적이지만, 가상머신은 완전한 컴퓨터이고 가상머신에 일일이 운영체제를 설치해야 하기 때문에 컨테이너 중심의 배포(Container Deployment)보다는 무거운 편이다.

3. Container Deployment(컨테이너 중심의 배포)
가상화 배포에서 하이퍼바이저라는 부분이 Container Runtime으로 대체되었고, Virtual Machine이라고 된 부분은 Container로 대체가 되었다.
컨테이너는 가상머신과 달리 프로그램 구동을 위해서 OS를 매번 설치할 필요가 없이 OS는 하나만 사용한다.
컨테이너 기반 배포는 전통적 배포 위에 Container Runtime이 올라가 있는 것 같은데 물리적인 컴퓨터 상에서만 유효한 것인지 궁금할텐데 꼭 그렇지는 않다.
컨테이너 런타임 위에 OS와 하드웨어가 층으로 쌓여 있는 그림을 보고 전통적인 배포 위에서 컨테이너 런타임을 올렸다고 오해를 하곤 하는데, 컨테이너는 OS 하단이 어떻게 동작하는지 직접 관심을 두지 않는다.
그래서 가상머신 위에 올라간 OS에서 컨테이너 기반 배포를 하는 것이 가능하다.
게임과 인터넷 뱅킹 소프트웨어가 각각 컨테이너로 배포된다고 가정할 때, 둘은 하나의 OS 상에서 구동되만 서로에게 간섭을 일으킬 수 없는 장벽을 친다.
이러한 장벽을 치는 것과 동시에 OS는 게임과 인터넷 뱅킹이 사용할 수 있는 CPU, 메모리 등의 자원 또한 독립적으로 사용할 수 있도록 할당하고 관리한다.
OS의 관점에서 보자면 둘 다 OS 상에서 구동되는 프로그램이다. 이와 같은 컨테이너 동작 방식을 OS 커널을 공유하는 가상화라고 표현하기도 한다.
이때 주의할 점이 하나 있는데, 컨테이너는 OS를 공유하는 방식이기 때문에 어떤 프로그램의 문제가 다른 프로그램을 간섭할 수는 없다.
그러나 내 프로그램의 문제가 OS에 문제를 일으킬 경우에는 OS에서 구동 중인 전체 컨테이너의 문제가 될 가능성이 있다.
출처: https://www.samsungsds.com/kr/insights/220222_kubernetes1.html?referrer=https://www.google.com/

 

쿠버네티스 알아보기 1편: 쿠버네티스와 컨테이너, 도커에 대한 기본 개념

요즘 IT 생태계에 관심이 많으신 분들이라면 쿠버네티스라는 단어를 들어 보셨을 텐데요. 쿠버네티스에 대해 개발자들의 관심이 높아지고 있고, 여러 대기업에서 새로운 시스템을 쿠버네티스를

www.samsungsds.com

 

728x90
반응형