STUDY/Data Engineering

17. CKA udemy 강의 정리 - Section 10 [Desing and install a Kubernetes Cluster]

wonpick 2023. 1. 28. 02:07

클러스터 설계에 대해서 논하기 전에 아래의 항목에 대해서 구분 해보자

  • 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

etcd 는 Kubernetes Cluster 의 Database 역할을 하는 서버입니다. Cluster 의 각종 서버정보와 상태를 Key-Value 형태로 저장한다. 

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대