워커노드
워커 노드는 단순히 우리의 머신, 컴퓨터, 예를 들어, 어딘가에서 실행 중인 ec2 인스턴스이다. 그리고 워커 노드는 설명한 것처럼 마스터 노드에서 관리한다.
워커 노드 내부에는 포드가 있다. 그리고 포드는 하나 이상의 애플리케이션 컨테이너와 이러한 컨테이너에 속한 모든 리소스를 호스팅한다.
예를 들어, 컨테이너를 올바르게 실행하기 위한 구성뿐 아니라, 볼륨과 같은 것도 리소스에 들어가 있다.
그리고 포드 자체는 이 마스터 노드에 의해 즉, 쿠버네티스에 의해 관리된다. 따라서 쿠버네티스는 포드를 생성하거나 삭제할 수 있는 것이다.
포드는 내부적으로 포드에 속한 컨테이너를 실행하고 관리할 수 있다.
하나의 포드에 하나의 컨테이너가 있지만, 밀접하게 작동해야 하는 여러 컨테이너가 있는 경우에는 포드 내부에 여러 컨테이너를 가질 수도 있다.
주어진 워커 노드에 둘 이상의 포드가 실행되는 게 일반적이다.
그건 다른 포드의 복사본일 수 있다. 예를 들어, 스케일링하고 하나의 동일한 컨테이너에서 여러 인스턴스를 실행하여 들어오는 트래픽을 분산하려는 경우에 대비한다. 그러나 완전히 다른 작업을 수행하기 위해 내부에 완전히 다른 컨테이너가 있는 포드일 수도 있다. 워커 노드는 태스크에 특정된 것이 아니기 때문이다. 워커 노드는 바로 컴퓨터이고 머신이다. 이를 염두에 두는 것이 정말 중요합니다.
워커 노드는 인터넷 어딘가에 특정량의 CPU와 메모리가 있는 머신일 뿐이다.
따라서 우리 자체 개발 머신에서 완전히 다른 컨테이너를 실행할 수 있는 것처럼, 당연히 완전히 다른 컨테이너와 태스크를 실행할 수 있다.
'docker run' 명령으로 다양한 이미지를 기반으로 하여 컨테이너를 원하는 만큼 실행할 수 있다.
그리고 실제로 'docker-compose'를 사용하여 이 과정을 해봤을 것이다. 백엔드, 프론트엔드, 데이터베이스 컨테이너가 모두 로컬 머신에서 실행되었었다. 그것이 기본적으로 워커 노드와 동일하다.
로컬 머신에만 있지만, 클라우드 프로바이더가 제공하는 인터넷의 컴퓨터에 있는 것이다.
이제 이 워커 노드에는 이러한 포드뿐 아니라, 몇 가지 추가 소프트웨어도 있다. 예를 들어 도커를 거기에 설치해야 한다. 당연히 도커는 컨테이너를 생성하고, 실행하는 포드에 필요하기 때문이다.
그런 다음 기본적으로 워커 노드와 마스터 노드 간의 통신 장치인 kubelet이라고 하는 또다른 소프트웨어가 실행되고 있다. 즉, 기본적으로 그 머신, 워커 노드 머신에서 실행중인 소프트웨어 서비스이다. 그것은 실제로 마스터 노드와 통신을 한다.
마스터 노드가 이 워커 노드의 포드를 제어할 수 있도록 한다. 그리고 실행중인 프록시 서브를 가진다. 프록시 서브는 들어오고 나가는 트래픽을 처리하는 책임을 가지며, 모든 것이 계획한대로 작동하도록 한다. 허용된 트래픽만이 포드에 접근하게 하고, 허용된 트래픽만이 워커 노드를 떠날 수 있게 한다.
이것이 워커 노드다.
마스터노드
API 서버
마스터 노드 내부에서 가장 중요한 서비스, 가장 중요한 소프트웨어라고 할 수 있는 것, 구동되고 있는 것은 API 서버이다.
이것은 워커 노드에서 실행되는 kubelet 서비스에 대한 카운터 포인트인 마스터 노드 머신에서 실행되는 간단한 서비스이다.
즉, 이것은 워커와 마스터 노드 간의 통신을 위한 카운터 파트(대응자)이다.
스케줄러
API 서버 외에도 마스터 노드 머신에 설치되어 실행되는 또다른 서비스는 기본적으로 포드를 관찰하고, 새 포드가 생성되어야 하는 워커 노드를 선택하는 일을 담당하는 스케줄러이다.
포드가 비정상적이 되거나, 다운되었거나, 또는 스케일링으로 인해, 새로운 포드를 생성해야 하기 때문에 새 포드를 추가해야 하는 경우에 실제로 워커 노드에 무엇을 알려야 하는지 API 서버에 알리는 역할을 한다.
큐브 컨트롤러 매니저 (Kube-Controller-Manager)
워커 노드 전체를 감시하고 제어하며 적당한 수의 포드를 가동 중에 있는지 확인하는 역할
그러므로 스케줄러 및 API 서버와 긴밀하게 연동된다. 그리고 큐브 컨트롤러 매니저의 특정 버전이 있다.
클라우드 컨트롤러 매니저
클라우드 컨트롤러 매니저는 큐브 컨트롤러 매니저와 동일한 작업을 수행하지만, 클라우드 프로바이더에 따라 다르다. 그런 다음, AWS 또는 Microsoft Azure와 같은 클라우드 프로바이더에게 무엇을 해야 하는지 알려준다.
즉, 이 클라우드 컨트롤러 매니저는 AWS, Azure, 사용 중인 프로바이더가 무엇이든, 그에게 명령을 번역한다.
어쨌든 실제로 사용할 가능성이 매우 높은 대형 클라우드 프로바이더는 이미 모든 것을 가져갈 수 있는 서비스를 가지고 있으므로 쿠버네틱스 구성을 제공하기만 하면 (마스터와 워커 노드를 수동으로 생성하고, 이들 서비스를 모두 설치하지 않아도 된다는 의미)
댓글