쿠버네티스란?
명칭
쿠버네티스(Kubernetes)는 간단하게 Kube 또는 k8s라고 부르기도 한다.
k8s의 뜻은 kubernetes의 첫 글자인 k와 마지막 글자인 s 사이의 스펠링이 8개인 것을 반영한 이름이다.
정의
쿠버네티스를 정의하려면 컨테이너의 개념을 알아야 한다.
컨테이너
- 앱이 구동되는 환경까지 감싸서 실행할 수 있도록 하는 격리 기술
컨테이너를 다루는 도구는 컨테이너 런타임이라고 하는데, 가장 유명한 컨테이너 런타임 어플리케이션은 당연 도커(Docker)라고 할 수 있다.
본론으로 들어와서, 쿠버네티스를 정의하자면 컨테이너 런타임을 통해 컨테이너를 오케스트레이션하는 도구이다.
여기서, 오케스트레이션은 무엇일까?
오케스트 레이션
- 여러 서버에 걸친 컨테이너 및 사용하는 환경 설정을 관리하는 행위
사용 이유
쿠버네티스의 정의는 결국 오케스트레이션이라고 할 수 있는데, 그래서 왜 사용하는지가 궁금할 수 있다. 우리는 멀쩡히 도커를 잘 사용하고 있기 때문이다.
단편적으로 예를 들면, 우리가 멀티 서버를 이용해 컨테이너 기반으로 서비스하려한다. 이때 각 서버의 컨테이너를 관리하기 위해서 도커만을 이용한다면... 각 서버에 접속하여 각 컨테이너의 설정을 해주고 등등 아주 복잡하다.
쿠버네티스를 이용한다면, 서버 클러스터링을 통해 각 서버의 리소스를 관리하여 어느 서버에 컨테이너를 할당할지, 컨테이너의 설정(리소스, 이미지 등)을 마스터 노드에서 관리하는 등의 관리를 쉽게 할 수 있다.
좀 더 어려운 느낌으로 사용 이유를 열거해보자.
- 서비스 디스커버리와 로드 밸런싱 서비스는 IP주소 또는 DNS를 이용하여 노출시킬 수 있고, 트래픽에 따라 로드 밸런싱이 가능하다.
- 스토리지 오케스트레이션 로컬 저장소, 공용 클라우드 등과 같이원하는 저장소 시스템을 자동으로 탑재할 수 있다.
- 자동화된 빈 패킹(bin packing) 각 컨테이너가 필요로하는 리소스(CPU, RAM 등)을 지시하면 노드에 맞추어 핸들링 해준다.
- 자동화된 복구 실패한 컨테이너를 다시 시작하고, 교체하고, 죽이는 작업을 통해 컨테이너를 자동으로 복구할 수 있다.
- 시크릿과 구성 관리 암호, OAuth 토큰 및 SSH 키와 같은 중요한 정보를 저장할 수 있음.
쿠버네티스 용어
마스터: 쿠버네티스 노드를 제어하는 서버
노드: 테스크를 요청대로 수행하는 서버, 마스터도 노드의 일부
파드(Pod): 단일 노드에 배포된 하나 이상의 컨테이너 그룹. 파드에 있는 모든 컨테이너는 IP주소, IPC, 호스트 이름, 기타 리소스를 공유하며 파드는 기본 컨테이너에서 네트워크와 스토리지를 추상화함.
복제 컨트롤러: 클러스터에서 실행되어야하는 동일한 파드 사본의 개수를 제어
서비스: 파드에서 작업 정의를 분리함. SSH, Jupyter notebook등을 서비스로 설정할 수 있음.
Kubelet: 노드에 존재하며, 컨테이너 매니페스트를 읽고, 정의된 컨테이너가 시작되어 실행 중인지 확인하는 서비스.
kubectl: 쿠버네티스 명령어 ex) # kubectl get pod
'MLops' 카테고리의 다른 글
쿠버네티스 설치 (0) | 2022.10.02 |
---|---|
Ubuntu에 Docker 설치 (0) | 2022.10.01 |