Azure Kubernetes Service 클러스터 만들기
회사는 AKS(Azure Kubernetes Service)를 클라우드 네이티브 개발 플랫폼으로 사용하여 클라우드 기반 비디오 렌더링 서비스를 배포할 계획입니다. 애플리케이션을 배포하려면 먼저 AKS 클러스터를 만들어야 합니다.
새로운 AKS 클러스터를 성공적으로 배포할 수 있도록 몇 가지 개념을 검토해보겠습니다.
Kubernetes 클러스터
Kubernetes는 클러스터를 기반으로 합니다. 단일 VM(가상 머신)을 사용하는 대신, 하나로 작동하는 여러 머신을 사용합니다. 해당 VM을 노드라고 합니다. Kubernetes는 클러스터 기반 오케스트레이터입니다. 가용성, 모니터링, 스케일링 및 롤링 업데이트와 같은 여러 가지 이점을 애플리케이션에 제공합니다.
클러스터 노드
클러스터는 노드 기반입니다. Kubernetes 클러스터에는 특정 기능을 제공하는 두 가지 노드가 있습니다.
컨트롤 플레인 노드: 해당 노드는 클러스터의 컨트롤 플레인 측면을 호스트하며 클러스터를 제어하는 서비스용으로 예약되어 있습니다. 운영자의 노드 및 다른 모든 노드가 통신하는 데 사용하는 API를 제공하는 역할을 합니다. 이러한 노드에는 워크로드를 배포하거나 예약하지 않습니다.
노드: 이 노드는 클라우드 기반 비디오 렌더링 서비스의 구성 요소와 같은 사용자 지정 애플리케이션 및 워크로드를 실행하는 역할을 합니다.
클러스터 아키텍처
클러스터 아키텍처를 사용하면 Kubernetes 클러스터에 배포할 컨트롤 플레인과 노드의 수를 개념화할 수 있습니다.
예를 들어 클러스터의 노드 수는 항상 세 개 이상이어야 합니다. 노드를 사용할 수 없게 되면 Kubernetes 스케줄러가 이 노드에서 실행 중인 모든 워크로드를 클러스터의 나머지 노드로 다시 예약합니다.
Kubernetes 기반 배포에는 많이 사용되는 두 가지 클러스터 아키텍처가 있습니다.
단일 컨트롤 플레인과 여러 노드
클러스터 아키텍처당 여러 노드에 대한 단일 컨트롤 플레인은 가장 일반적인 아키텍처 패턴이며 배포하기 가장 쉽지만 클러스터의 핵심 관리 서비스에 고가용성을 제공하지는 않습니다.
어떤 이유로든 컨트롤 플레인 노드를 사용할 수 없게 되는 경우 클러스터에서 다른 상호 작용이 발생할 수 없습니다. 이러한 문제는 운영자인 경우라도, 또는 Kubernetes의 API를 사용하여 통신하는 워크로드에 의해서라도, 최소한 API 서버가 다시 온라인이 될 때까지는 발생할 수 있습니다.
이 아키텍처는 다른 아키텍처보다 가용성은 떨어지지만 대부분의 상황에서 충분합니다. 오프라인으로 전환되는 노드보다 핵심 관리 서비스가 사용할 수 없게 될 가능성이 작습니다. 컨트롤 플레인 노드는 다른 노드보다 더 적게 수정되고 복원력이 더 높습니다.
프로덕션 시나리오를 처리하는 경우에는 이 아키텍처가 최상의 솔루션이 아닐 수도 있습니다.
단일 컨트롤 플레인과 단일 노드
단일 노드로의 단일 컨트롤 플레인 아키텍처는 이전 아키텍처의 변형이며 개발 환경에서 사용됩니다. 이 아키텍처는 컨트롤 플레인과 작업자 노드를 둘 다 호스트하는 하나의 노드만 제공합니다. 다양한 Kubernetes 개념을 테스트하거나 실험하는 경우 유용합니다. 단일 컨트롤 플레인과 단일 노드 아키텍처에 따라 클러스터 스케일링이 제한되며 이 아키텍처가 프로덕션 및 준비 용도에 부적합하게 됩니다.
AKS 클러스터 구성
새 AKS 클러스터를 만들 때 구성할 여러 항목이 있습니다. 각 항목은 컴퓨팅 리소스 할당을 위한 클러스터의 최종 구성에 영향을 줍니다.
이러한 항목은 다음과 같습니다.
- 노드 풀
- 노드 수
- 노드 VM 크기
노드 풀
AKS 클러스터의 노드를 그룹화하는 ‘노드 풀’을 만듭니다. 노드 풀을 만들 때 애플리케이션 요구 사항에 따라 노드 풀의 각 노드에 대한 VM 크기와 OS 유형(Linux 또는 Windows)을 지정합니다. 사용자 애플리케이션 Pod를 호스팅하려면 노드 풀 모드는 사용자가 아니면 시스템이어야 합니다.
AKS 클러스터는 Azure Portal 또는 CLI를 통해 만드는지에 관계없이 기본값으로 Linux 노드 풀(시스템 모드)을 포함합니다. 그러나 포털에서 만들기 마법사, CLI의 매개 변수 또는 ARM 템플릿을 사용하는 동안 기본 Linux 노드 풀과 함께 Windows 노드 풀을 추가하도록 구성할 수 있습니다.
노드 풀은 가상 머신 확장 집합을 기본 인프라로 사용하여 클러스터에서 노드 풀의 노드 수를 스케일링할 수 있도록 합니다. 노드 풀에서 만든 새 노드는 항상 노드 풀을 만들 때 지정한 크기와 동일합니다.
노드 수
노드 수는 클러스터에서 노드 풀에 포함할 노드의 수입니다. 노드는 Azure VM입니다. 사용 패턴과 일치하도록 가상 머신의 크기와 수를 변경할 수 있습니다.
나중에 클러스터의 구성 패널에서 노드 수를 변경할 수 있습니다. 불필요한 비용 및 사용되지 않은 컴퓨팅 기능을 방지하기 위해 이 수치를 최대한 낮게 유지하는 것이 모범 사례입니다.
노드 VM 크기
다양한 VM 사양 중에서 선택합니다. 개발 목적으로 B 시리즈를 선택하여 비용을 절감할 수 있습니다. 연습에서는 표준 크기인 시리즈 B2를 사용합니다. 필요에 따라 VM을 선택하는 방법에 대한 자세한 지침은 Azure VM 선택기 도구를 참조하세요.