*유데미에서 진행하는 Kubernetes for the Absolute Beginners - Hands-on 강의를 바탕으로 제작되었습니다.
쿠버네티스란 k8s, kube라고도 불리며 컨테이너화된 애플리케이션 배포, 관리 및 확장을 예약하고 자동화하기 위한 컨테이너 오케스트레이션 플랫폼
kubernetes란 그리스어로 "조타수", "조종사"를 의미하며 컨네이터를 운용하기 때문에 로고에 조타기가 있습니다.
쿠버네티스란 무엇인가, 왜 필요하고 어떤 구성을 가지고 있는지 알아보겠습니다
1. 마스터 노드와 워커 노드
노드: 노드는 쿠버네티스가 컨테이너를 런칭하는 가상의 리소스, 물리적인 용량을 차지합니다
클러스터: 다 함께 묶인 노드의 집합
위와 같이 클러스터를 구성하면 하나의 어플리케이션을 실행하는 노드에 이상이 생겨도 다른 노드가 그 역할을 대신해 안정적인 운영이 가능합니다.
하지만 이러한 상황에서 다른 노드가 역할을 대신하도록 명령해주는 주체가 필요한데 그것을 마스터 노드가 수행합니다. 마스터 노드는 쿠버네티스 클러스터에 설치된 또 다른 노드입니다. 노드는 마스터 노드와 워커 노드가 있습니다.
2. 쿠버네티스 컴포넌트
쿠버네티스를 설치하게 되면 따라오는 구성요소를 알아보겠습니다.
1) api server
쿠버네티스에서 프론트 엔드처럼 작동, 사용자 관리, 장치 인터페이스 모두 api 서버와 통신해 쿠버네티스 클러스와 상호작용
2) etcd
key-value 저장소로 쿠버네티스가 클러스터 관리에 필요한 모든 정보를 저장, 클러스터 내에서 잠금을 구현(마스터 노드간 충돌을 없게하기 위해서)
3) kubelet
클러스터 내 각 노드에서 실행되는 에이전트, 에이전트는 예상대로 컨테이너가 노드에서 실행되는지 확인할 의무가 있습니다.
4) container runtime
컨테이너를 실행하는데 사용되는 기본 소프트웨어(=docker)
5) controller
오케스트라를 지휘하는 두뇌, 노드/컨테이너가 다운될 때 새 컨테이너를 들여올지 결정
6) scheduler
댜중 노드에 걸쳐 작업이나 컨테이너를 배포, 새로 생성된 컨테이너를 찾아 노드에 할당
3. 마스터 노드와 워커 노드 상호작용
마스터 노드에는 kube-apiserver와 etcd, controller, scheduler등의 컴포넌트가 있고, 워커 노드에는 docker를 실행할 container runtime과 kube-apiserver를 통해 마스터노드의 명령을 통신할 kubelet이 있습니다.
POD
쿠버네티스는 워커 노드에 직접 컨테이너를 배포하지 않습니다. 쿠버네티스는 포드란 이름의 캡슐 형태의 물체로 컨테이너를 배포합니다.
포드는 앱의 단일 인스턴스이며, 쿠버네티스에서 가장 작은 단위입니다.
가장 단순한 형태인 클러스터 내에 단일 노드와 단일 포드로 구성된 형태를 알아보겠습니다.
단일 인스턴스 포드안에서 축소된 단일 DOCKER 컨테이너에서 실행되고 있습니다.
이러한 상황에서 서비스를 하는 중 액세스하는 사용자 수가 증가한 경우 부하를 어떻게 감당해야 할까요?
단일 포드안에 추가로 컨테이너를 넣어야 할까요?
그렇지 않습니다. 일반적으로 사용자가 증가해 대처를 하는 상황에선 멀티 컨테이너 포드 보다는 새로운 포드를 생성해 응용 프로그램을 가진 컨테이너를 생산합니다.
같은 응용 프로그램의 새로운 인스턴스로 완전히 새로운 포드를 생성합니다.
여기서 더 사용자 접속이 증가해 부하를 감당하지 못하는 경우엔 어떻게 해야할까요?
새로운 인스턴스 포드를 늘리는 것이 아니라 이번엔 노드를 늘려 그에 맞춰 대응합니다. 기존 노드의 용량으로 사용자 증가 부하를 감당하지 못하기 때문이죠
노드를 추가해 클러스터의 물리적인 용량을 증가시켰습니다.
컨테이너는 포드와 1대1 관계를 가지는 것이 일반적입니다. 확장하려면 새로운 포드를 만들고, 축소하려면 기존의 포드를 제거해야합니다.다중 컨테이너 포드도 있기는 하지만 응용 프로그램 컨테이너와 그것을 돕는 도우미 컨테이너가 쌍을 이루는 경우이고, 응용 프로그램 컨테이너를 여러개 넣지는 않습니다.
'[Cloud] > [Kubernetes]' 카테고리의 다른 글
[Kubernetes] ReplicaSet 설정 명령어 (0) | 2024.05.23 |
---|---|
[Kubernetes] 쿠버네티스 ReplicaSet (0) | 2024.05.22 |
[Kubernetes] 쿠버네티스 pod-definition 기본 형식 (0) | 2024.05.22 |
[Kubernetes] VSCODE Kubernetes YAML 확장 프로그램 설치 및 설정 (0) | 2024.05.22 |
[Kubernetes] YAML, JSON, XML (0) | 2024.05.21 |