본문 바로가기
MLOps/Doker & Kubernetes

Udemy CKA 강의 정리 234: Design a Kubernetes Cluster

by 공부하는 무니 2023. 1. 27.
반응형

해당 내용은 Udemy의 Certified Kubernetes Administrator (CKA) with Practice Tests 강의를 공부한 내용입니다. 내용을 그대로 번역하기보다는, 제가 이해하기 쉬운 대로 수정한 부분들이 있습니다.

⚠️ 영어 독해가 많이 부족합니다. 틀린 내용이 있으면 알려주시면 감사하겠습니다.


이번 강의에서는 쿠버네티스 클러스터 설계에 대해 이야기해보겠습니다. 클러스터를 설계하기 전에 아래와 같은 질문을 해보시기 바랍니다.

  • Purpose
    • Education
    • Development & Testing
    • Hosting Production Application 
  • Cloud or OnPrem?
  • Worklads
    • How many?
    • What kind?
      • Web
      • Big Data/Analytics
    • Application Resource Requirements
      • CPU Intensive
      • Memory Intensive
    • Traffic
      • Heavy traffic
      • Burst traffic

Purpose

Purpose부터 살펴보겠습니다.

  • Education
    • Minikube
    • Single node cluster with kubeadm/GCP/AWS
  • Develoopment & Testing
    • Multi-node cluster with a Single Master and Multiple workers
    • Setup using kubeadm tool or quick provision on GCP or AWS or AKS
  • Hosting Production Applications
    • High Availability Multi node cluster with multiple master nodes
    • Kubeadm or GCP or Kops on AWS or other supported platforms
    • Upto 5000 nodes
    • Upto 150,000 PODs in the cluster
    • Upto 300,000 Total Containers
    • Upto 100 PODs per Node

Education

교육 목적으로 클러스터를 배포하고 싶다면 minikube기반의 솔루션이나 GCP나 AWS 같은 cloud provider 혹은 로컬에서 kubeam을 이용해 배포된 단일 노드 클러스터를 사용할 수 있습니다. 초보자 코스에서 이러한 클러스터를 배포했습니다.

Development & Testing

개발 및 테스트 목적으로 클러스터를 배포하려면 단일 마스터가 있는 다중 워커 노드 클러스터가 도움이 될 것입니다. kubeadm을 사용하거나, 관리형 클라우드 환경에 있는 경우 GCP의 Google 컨테이너 엔진이나 AWS 또는 Azure의 ASK 솔루션을 사용하여 신속하게 클러스터 프로비저닝할 수 있습니다.

Hosting Production Applicatons

프로덕션 애플리케이션 호스팅의 경우, 고가용성 다중 마스터 노드 클러스터를 사용하는 것이 좋습니다. 고가용성 설정에 대해 살펴보겠습니다. 이 섹션의 후반부에 여러 마스터 노드를 다룹니다. 다시 말하지만, 이것은 kubeadm이나 GCP, Kops, AWS, 기타 지원 플랫폼에서 설정할 수 있습니다. 

클러스터에 최대 5,000개의 노드를 포함할 수 있습니다. 클러스터에 있는 150,000 개의 파드 에서 총 300,000 개의 컨테이너를 가질 수 있습니다. 노드 당 최대 100개의 파드를 가질 수 있습니다.

이제 클러스터 크기에 따라 노드의 리소스 요구 사항이 달라집니다. GCP 및 AWS와 같은 클라우드 서비스 제공업체는 클러스터의 노드 수에 따라 적절한 크기의 노드를 자동으로 선택합니다. 이 표는 인스턴스의 크기와 특정 노드 수에 대한 리소스 spec을 보여줍니다.

온프레미스 노드를 배포하는 경우 이러한 숫자를 space으로 시작할 수 있습니다.

Cloud or OnPrem?

  • Use Kubeadm for on-prem
  • GKE for GCP
  • Kops for AWS
  • Azure Kubernetes Service(AKS) for Azure

클라우드 또는 온프레미스, 이러한 모든 배포 옵션을 모든 환경에서 사용할 수 있다고 이미 논의했습니다. 온프레미스의 경우 kube admin은 매우 유용한 tool입니다. Google 컨테이너 엔진을 사용하면 GCP에서 Kubernetes 클러스터를 매우 쉽게 프로비저닝할 수 있습니다. 클릭 한 번으로 클러스터를 매우 쉽게 유지 관리할 수 있는 클러스터 업그레이드 기능이 함께 제공됩니다. Kops는 AWS에 Kubernetes 클러스터를 배포하는 좋은 tool입니다. 그리고 Azure Kubernetes 서비스 또는 AKS는 Azure에서 호스트된 Kubernetes 환경을 관리하는 데 도움이 됩니다.

Storage

  • High Performance - SSD Backend Storage
  • Multiple Concurrent connections - Network based storage
  • Persistent shared volumes for shared access across multiple PODs
  • Label nodes with specific disk types
  • Use Node Selectors to assign applications to nodes with specific disk types

구성된 워크로드에 따라 노드 및 구성 해제가 달라집니다. 고성능 워크로드의 경우 SSD 지원 스토리지를 사용하세요. 다중 동시 액세스의 경우 네트워크 기반 스토리지를 고려하세요. 여러 파드에서 volume에 대한 공유 액세스의 경우 스토리지 섹션에서 논의한 지속성 스토리지 volume을 고려하세요. 다양한 스토리지 클래스를 정의하고 올바른 애플리케이션에 올바른 클래스를 할당하는 것을 고려하세요.

Nodes

  • Virtual or Physical Machies
  • Minimum of 4 Node Cluster (Size based on workload)
  • Master vs Worker Nodes
  • Linux X86_64 Architecture

Kubernetes 클러스터에서 형성되는 노드는 물리적이거나 가상일 수 있습니다. 이 경우 클러스터의 노드로 virtual box환경에 가상 머신을 배포할 것입니다. GCP, AWS, Azure 또는 선택한 기타 플랫폼과 같은 물리적 머신이나 가상 머신 또는 클라우드 환경에 배포하도록 선택할 수 있습니다.

3개의 노드(마스터 노드 1개와 워커 노드 2개)로 클러스터를 구축할 것입니다. 이제 우리는 마스터 노드가 kubeAPI 서버 등에서 ETCD 서버와 같은 제어 컴포넌트를 호스트하기 위한 것임을 알고 있습니다. 워커 노드는 워크로드를 호스팅하기 위한 것입니다. 그러나 이는 엄격한 요구 사항이 아니며 마스터 노드도 노드로 간주되며 워크로드를 호스트할 수 있습니다.

  • Master nodes can host workleads
  • Best practice is to not host workloads on Master nodes

모범 사례로서는, 특히 프로덕션 환경에서는 컴포넌트를 제어하기 위한 전용 마스터 노드를 사용하는 것이 좋습니다. kubeadm과 같은 배포 tool은 마스터 노드에 taint을 추가하여 워크로드가 마스터 노드에서 호스팅되는 것을 방지합니다. 노드에는 64비트 Linux 운영 체제를 사용해야 합니다.

Master Nodes

주목해야 할 또 다른 사항은 일반적으로 마스터 노드에 모든 컨트롤 플레인 컴포넌트가 있다는 것입니다. 그러나 대규모 클러스터에서는 etcd 클러스터를 마스터 노드에서 자체 클러스터 노드로 분리하도록 선택할 수 있습니다. 다음 강의에서 고가용성 설정에 대해 이야기할 때 이에 대한 다양한 형태에 대해 자세히 논의할 것입니다.

이것이 Kubernetes 클러스터를 설계할 때 고려해야 할 몇 가지 사항입니다. 자세한 내용은 참조 섹션의 링크를 참조하세요. 

반응형

댓글