Designing a Kubernetes Cluster
쿠버네티스는 노트북부터 조직 내 물리적 또는 가상 서버, 클라우드에 이르기까지 다양한 시스템에 여러 가지 방식으로 배포할 수 있습니다. 요구 사항, 클라우드 생태계 및 배포하고자 하는 애플리케이션의 종류에 따라 적합한 솔루션을 선택할 수 있습니다.
클러스터 설계를 위한 고려 사항
학습 목적:
- Minikube나 kubeadm을 사용해 GCP나 AWS 같은 클라우드 제공자에서 단일 노드 클러스터를 배포할 수 있습니다.
개발 및 테스트 목적:
- kubeadm을 사용하여 Single Master 그리고 Multiple workers로 구성하거나 GCP의 Google Kubernetes Engine, AWS EKS, Azure의 AKS 같은 관리형 클라우드 환경에서 다중 노드 클러스터를 빠르게 프로비저닝할 수 있습니다.
생산급 애플리케이션:
- 고가용성을 갖춘 다중 마스터 노드를 포함한 다중 노드 클러스터가 권장됩니다.
- kubeadm, kOps (AWS에서), 또는 다른 플랫폼에서 지원하는 도구를 사용할 수 있습니다.
리소스 요구사항:
- 애플리케이션의 종류에 따라 리소스 요구사항이 달라집니다.
- 예를 들어, 고성능 워크로드에는 SSD 기반 스토리지를, 다중 동시 액세스가 필요한 경우 네트워크 기반 스토리지를 고려해야 합니다.
스토리지:
- 볼륨에 대한 접근은 여러 파드 간에 공유할 수 있도록 지속적인 스토리지 볼륨을 고려해야 합니다.
- 다양한 클래스의 스토리지를 정의하고 적절한 애플리케이션에 적합한 클래스를 할당해야 합니다.
클러스터 구성:
- 클러스터는 물리적 또는 가상 머신에 배포할 수 있습니다.
- 클라우드 환경(GCP, AWS, Azure 등) 또는 자체 데이터 센터에서 배포할 수 있습니다.
- 일반적으로 클러스터는 하나의 마스터 노드와 여러 워커 노드로 구성됩니다.
고가용성:
- 큰 클러스터의 경우, 마스터 노드에서 etcd 클러스터를 분리하여 자체 클러스터 노드에 배포하는 것을 고려할 수 있습니다.