Design and install a Kubernetes Cluster
Design a Kubernetes Cluster
클러스터 설계 전 다음과 같은 질문을 해보자.
Purpose
- Education
교육 목적으로 클러스터를 배포하고자 한다면 minikube 기반 솔루션이나 GCP, AWS 같은 CSP 또는 kubeadm을 이용해 단일 노드 클러스터를 배포하여 사용할 수 있다.
- Development & Testing
개발 및 테스트를 목적으로 하는 클러스터 배포는 단일 마스터가 있는 다중 워커노드 클러스터가 좋다.
kubeadm을 사용하거나 관리형 클라우드 환경에 있는 GCP 컨테이너 엔진, 또는 AWS나 Azure의 ASK 솔루션을 사용하여 신속하게 클러스터를 프로비저닝 할 수 있다.
- Hosting Production Applications
프로덕션 애플리케이션 호스팅의 경우에는 고가용성 다중 마스터 노드가 있는 클러스터를 사용하는 것이 좋다.
Cloud or OnPrem?
클라우드 또는 온프레미스는 아래의 배포 옵션을 사용할 수 있다.
- Use Kubeadm for on-prem
온프레미스의 경우 kubeadm이 매우 유용할 것이다.
- GKE for GCP
GCP를 사용하면 GCP에서 Kubernetes 클러스터를 매우 쉽게 프로비저닝 할 수 있다.
클릭 한 번으로 클러스터를 쉽게 유지, 관리할 수 있는 클러스터 업그레이드 기능이 함께 제공된다.
- Kops for AWS
Kops는 AWS에 Kubernetes 클러스터를 배포하는 도구이다.
- Azure Kubernetes Service(AKS) for Azure
Azure Kubernetes Service는 Azure에서 제공하는 Kubernetes 환경을 관리하는데 도움이 된다.
Storage
구성된 워크로드에 따라 노드 및 스토리지 구성이 달라진다.
- High Performance - SSD Backend Storage
고성능 워크로드의 경우 SSD 지원 스토리지를 사용한다.
- Multiple Concurrent Connections - Network Based Storage
다중 동시 접근의 경우 네트워크 기반 스토리지를 고려한다.
- Persistent Shared Volumes for shared access across multiple Pods
여러 파드에서 volume에 대한 공유 액세스의 경우 persistent volume을 고려한다.