Kubernetes 및 AKS 개요
Contoso의 컴퓨팅 환경에서 워크로드 민첩성과 밀도를 높이기 위해 컨테이너화의 원칙을 살펴보는 동안 개별 컨테이너의 배포보다 컨테이너 오케스트레이션에 집중해야 한다는 사실을 알게 되었습니다. 개별 컨테이너의 배포는 단순성을 제공하지만 확장성과 복원력이 부족합니다. 컨테이너 오케스트레이션을 알아보다가 계획된 구현에 Kubernetes와 AKS가 가장 적합할 것 같다는 사실을 확인했습니다.
Kubernetes란?
Kubernetes는 컨테이너화된 워크로드의 오케스트레이션을 위한 Linux 기반의 확장 가능한 오픈 소스 플랫폼입니다. 일반적인 Kubernetes 배포는 복원력을 제공하기 위해 노드라고 하는 여러 클러스터형 서버로 구성됩니다. 일부는 워크로드를 배포할 나머지 노드의 관리를 담당하는 컨트롤 플레인을 형성합니다. Kubernetes의 경우 이러한 워크로드는 Pod라고 하는 컨테이너화된 애플리케이션의 인스턴스로 구성됩니다.
참고
컨트롤 플레인의 핵심 구성 요소 중 하나는 Kubernetes 클러스터의 구성과 관리를 위한 인터페이스를 제공하는 API 서버입니다.
참고
Pod는 동일한 클러스터 노드에서 실행되면서 서로 긴밀하게 결합된 여러 컨테이너를 포함할 수 있지만 대체적으로 컨테이너와 비슷합니다.
일반적으로 Pod는 상태를 저장하지 않으며 내재된 복원력 기능을 제공하지 않습니다. 고가용성 및 중복성을 구현하려면 배포를 사용하여 프로비전할 수 있습니다. 일반적으로 배포는 동일한 구성을 공유하고 동일한 이미지를 기반으로 컨테이너를 실행하는 여러 Pod 복제본으로 구성됩니다. Kubernetes는 배포 내에서 Pod의 수명 주기를 자동으로 관리하여 사용 가능한 클러스터 노드 간에 실패한 항목을 최적의 방식으로 다시 만듭니다.
또한 배포는 컨테이너화된 워크로드의 가용성에 영향을 주지 않고 Pod 내에서 실행되는 컨테이너의 이미지에 대한 업데이트를 간소화합니다. 중단 예산을 정의하여 업데이트 프로세스 전반에서 온라인 상태를 유지해야 할 Pod 복제본의 수를 제어합니다.
Pod로 직접 연결하려면 서비스라고 하는 다른 Kubernetes 리소스 종류를 구현할 수 있습니다. 예를 들어 서비스를 사용하면 인터넷에서 동일 배포의 일부로서 Pod 그룹에 호스트된 웹 서비스로 부하가 분산된 외부의 연결을 설정할 수 있습니다.
Kubernetes는 Pod, 서비스, 배포, 그 외에도 여러 클러스터 구성 요소를 네임스페이스로 격리하는 기능을 제공합니다. 네임스페이스는 논리적 경계를 형성하므로 클러스터 리소스를 만들거나, 보거나, 사용하는 액세스 권한을 제한할 수 있습니다.
Kubernetes의 주요 이점
Kubernetes는 공유 계산, 네트워킹 및 스토리지 리소스를 사용하는 다중 컨테이너 환경에 대해 일관된 관리 모델을 제공합니다. 필요한 구성을 설명하고 Kubernetes 컨트롤 플레인에 대해 구현을 유지하는 선언적 배포 및 관리 모델을 제공합니다.
참고
선언적 관리 모델에서는 YAML 형식이 지정된 매니페스트 파일을 사용하여 Pod, 서비스 및 배포와 같은 Kubernetes 구성 요소의 프로비전, 수정 및 삭제를 제어합니다. 또한 패키지된 YAML 파일 컬렉션(Helm 차트라고도 함)을 사용할 수도 있습니다. Helm은 Kubernetes용 패키지 관리자이며 Kubernetes 클러스터에 더 복잡한 워크로드를 쉽게 배포할 수 있도록 합니다.
또한 Kubernetes는 다음과 같은 이점을 제공합니다.
- Pod 자동 복구
- Pod의 자동 크기 조정
- 가상화된 시나리오에서 자동 클러스터 노드의 자동 크기 조정
- Pod 배포의 자동 롤링 업데이트 및 롤백
- 새 Pod 배포의 자동 검색
- 동일한 워크로드를 실행하는 Pod 간에 부하 분산
Kubernetes를 사용하면 물리적 또는 가상 서버의 그룹을 통합 계산 리소스로 취급할 수 있으며, 컨테이너화된 워크로드의 민첩성과 밀도를 사용하여 서버를 동시에 최적화할 수 있습니다. Kubernetes는 컨테이너 관리를 간소화하지만 관리에는 다양한 구성, 관리 및 유지 관리 작업이 포함됩니다.
- 배포, 크기 조정, 부하 분산, 로깅 및 모니터링과 같은 측면은 모두 선택 사항입니다. 해당 요구 사항을 해결하는 최적의 구성을 찾아서 구현하는 것은 각자의 몫입니다.
- Kubernetes는 미들웨어, 데이터 처리 프레임워크 또는 데이터베이스를 기본적으로 제공하지 않습니다. 그러나 컨테이너를 사용하여 해당 기능을 구현할 수 있는 옵션이 있습니다.
- Kubernetes 환경을 유지 관리할 책임이 있습니다. 예를 들어 운영 체제 업그레이드 및 Kubernetes 업그레이드를 관리해야 합니다. 네트워킹, 메모리 및 스토리지와 같은 클러스터 노드에 제공되는 하드웨어 리소스로 관리해야 합니다.
참고
AKS처럼 관리되는 Kubernetes 제품을 사용하면 이러한 작업이 최소화되거나 전혀 신경 쓸 필요가 없습니다.