클러스터 설계에 대해서 논하기 전에 아래의 항목에 대해서 구분 해보자
- Purpose
- Education
- Development & Testing
- Hosting Production Applications
- Cloud or OnPrem?
Use Kubeadm for on-prem
GKE for GCP
Kops for AWS
Azure Kubernetes Service(AKS) for Azure - Workloads
High Performance – SSD Backed 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
- How many?
- What kind?
- Web
- Big Data/Analytics
- Application Resource Requirements
- CPU Intensive
- Memory Intensive
- Traffic
- Heavy traffic
- Burst Traffic
Kubernetes는 로컬부터 조직 내의 물리적/가상 서버 및 클라우드까지 다양한 시스템에 배포할 수 있다.
먼저 지원되는 Linux 시스템에서 수동으로 바이너리 설치를 시작할 수 있다. 하지만 이걸 일일이 다 하려면 너무 힘들기 때문에 자동화 솔루션을 사용하면 좋다. 하지만 윈도우는 쿠버네티스를 설정할 수 없다. Windows 바이너리가 없기 때문이다. 가상화 소프트웨어에 의존해야 합니다. Hyper-V 또는 VMware 워크스테이션과 같은 또는 Workshop Box를 사용하여 Linux VM 생성 Kubernetes를 실행할 수 있다.
로컬 머신에서 Kubernetes를 쉽게 시작하려면?
Minikube를 사용하자. Minikube는 단일 노드 클러스터를 쉽게 배포한다.
kubeadm 도구를 사용하여 배포할 수 있다. 단일 노드 또는 다중 노드 클러스터가 정말 빠르다. 하지만 이를 위해서는 필수 호스트를 프로비저닝해야 한다.
ETCD in HA
Kubernetes는 기반 스토리지(backing storage)로 etcd를 사용하고 있고, 모든 데이터가 etcd에 보관된다. 예를 들어, 클러스터에 어떤 노드가 몇 개나 있고 어떤 파드가 어떤 노드에서 동작하고 있는지가 etcd에 기록된다. 만약 동작 중인 클러스터의 etcd 데이터베이스가 유실된다면 컨테이너뿐만 아니라 클러스터가 사용하는 모든 리소스가 할당되지 못한다. .
그렇다면 클러스터에 몇개의 노드가 있어야할까?
하나 또는 두 개의 인스턴스를 갖는 것은 실제로 의미가 없고, HA 설정에 필요한 최소 노드는 3개이다. (홀수개의 노드수를 선호한다고 한다.) 더 높은 수준의 내결함성을 선호한다면 5개가 좋지만 그 이상은 불필요하다.
-> 노드가 짝수일경우 네트워크 세분화 중 클러스터 결함이 발생할 가능성이 있기 때문에 홀수 선호.
ETCD HA 구성에 앞서 아래 3 가지 조건을 충족해야 한다.
- 3개의 Master Node는 포트 2379 및 2380을 통해 서로 통신 할 수 있어야한다. 그러나 포트는 kubeadm 구성 파일을 통해 원하는대로 구성 할 수 있다.
- 각 호스트에는 docker, kubelet 및 kubeadm이 설치되어 있어야한다.
- 호스트간에 파일을 복사하기 위한 일부 인프라를 사용할 수 있어야한다. (ex. ssh 및 scp)
- 외부 ETCD 서버 3대
'STUDY > Data Engineering' 카테고리의 다른 글
19. CKA udemy 강의 정리 - Section 14 [OtherTopics] (0) | 2023.01.31 |
---|---|
18. CKA udemy 강의 정리 - Section 13 [Troubleshooting] (0) | 2023.01.31 |
16. CKA udemy 강의 정리 - Section 9 [Networking] (0) | 2023.01.25 |
[kodekloud] 04 Commands and Arguments 풀이 (살짝😵💫) (0) | 2023.01.24 |
[kodekloud] 04 Rolling Updates and Rollbacks 풀이 (0) | 2023.01.24 |