노드는 Kubernetes가 설치된 물리적 또는 가상머신이다.
노드는 Worker 노드이며 Kubernetes에 의해 실행될 Container이다. (과거에는 Minions이라고 불림)
애플리케이션이 실행 중에 노드가 실패하면 애플리케이션은 다운되기 때문에 하나 이상의 노드가 필요하다.
클러스터는 그룹화된 노드의 집합이다.
노드가 여러 개 있으면 부하를 분산하는데도 도움이 된다.
마스터는 Kubernetes에 설치된 또 다른 노드이며 마스터로 구성된다.
마스터는 클러스터의 노드를 감시하고 Worker 노드에서 Container의 실제 Container Orchestration을 담당한다.
시스템에 Kubernetes가 설치되면 실제로 다음 구성 요소가 설치된다.
- API 서버, ETCD, kubelet, Container 런타임, 컨트롤러, 스케줄러
API 서버는 Kubernetes의 Front-end 역할을 한다. 사용자, management 서비스, CLI 는 모두 Kubernetes 클러스터와 상호작용하기 위해 API 서버와 통신한다.
ETCD는 키 저장소로 클러스터를 관리하는데 사용되는 모든 데이터를 저장하기 위해 Kubernetes에서 사용하는 값을 분산 방식으로 저장한다.
kubelet는 클러스터의 각 노드에서 실행되는 에이전트로 Container가 예상대로 노드에서 실행되고 있는지 확인한다.
Container 런타임은 Container를 실행하는데 사용되는 기본 소프트웨어로 여기서는 Docker이다.
컨트롤러는 Orchestration의 두뇌라고 볼 수 있다. 노드, Container 또는 엔드포인트가 다운될 때 이를 인지하고 새로운 Container를 가져온다.
스케줄러는 작업 또는 Container를 여러 노드에 분산시키는 역할을 하고 새로 생성된 Container를 찾아 노드에 할당한다.
Worker 노드(Minions)는 Container 런타임이 설치되어 있어야 한다. (여기서는 Docker)
마스터 노드는 kube-apiserver가 있으며 이는 Worker 노드의 상태 정보를 제공하고 마스터 노드가 요청한 작업을 수행하기 위해 사용 작용을 담당하는 kubelet이 있다.
수집된 모든 정보는 마스터 노드의 etcd(key-value 저장소)에 저장된다.
그리고 마스터 노드에는 컨트롤러와 스케줄러도 있다.
마지막으로 kubectl은 커멘드 라인 툴로 Kubernetes 클러스터에서 애플리케이션을 배포 및 관리하고, 클러스터 정보를 가져오고, 클러스터의 노드 상태 및 기타 정보를 가져오는데 사용된다.
아래는 몇 가지 명령어 예시이다.
kuberctl run : 클러스터에 애플리케이션을 배포하는데 사용
kuberctl cluster-info : 클러스터에 대한 정보를 보는데 사용
kuberctl get pod : 클러스터의 모든 노드 부분을 나열하는데 사용
* 본 게시글은 udemy "Kubernetes for the Absolute Beginners - Hands-on" 강의 수강 후 공부용으로 작성한 글입니다.
'Kubernetes' 카테고리의 다른 글
Kubernetes 초보 강의 : Kubernetes Setup (0) | 2023.02.14 |
---|---|
Kubernetes 초보 강의 : Container Orchestration (0) | 2023.02.14 |
Kubernetes 초보 강의 : Kubernetes 개요 (0) | 2023.02.13 |