태스크

Edit This Page

고가용성 쿠버네티스 클러스터 마스터 설정하기

FEATURE STATE: Kubernetes 1.5 alpha
이 기능은 현재 알파(alpha) 상태로, 다음을 의미한다.

  • 버전 이름에는 알파(예: v1alpha1)가 포함되어 있다.
  • 버그가 있을 수 있다. 기능을 활성화하면 버그가 노출될 수 있다. 기본적으로 비활성화되어 있다.
  • 기능 지원은 예고 없이 언제든지 중단될 수 있다.
  • API는 이후 소프트웨어 릴리즈에서 예고 없이 호환되지 않는 방식으로 변경될 수 있다.
  • 버그에 의한 위험 증가와 장기적인 지원 부족으로, 단기 테스트 클러스터에서만 사용할 것을 권장한다.

구글 컴퓨트 엔진(Google Compute Engine, 이하 GCE)의 kube-up이나 kube-down 스크립트에 쿠버네티스 마스터를 복제할 수 있다. 이 문서는 kube-up/down 스크립트를 사용하여 고가용(HA) 마스터를 관리하는 방법과 GCE와 함께 사용하기 위해 HA 마스터를 구현하는 방법에 관해 설명한다.

시작하기 전에

쿠버네티스 클러스터가 필요하고, kubectl 커맨드-라인 툴이 클러스터와 통신할 수 있도록 설정되어 있어야 합니다. 만약, 클러스터를 이미 가지고 있지 않다면, Minikube를 사용해서 만들거나, 다음의 쿠버네티스 플레이그라운드 중 하나를 사용할 수 있습니다:

버전 확인을 위해서, 다음 커맨드를 실행 kubectl version.

HA 호환 클러스터 시작

새 HA 호환 클러스터를 생성하려면, kube-up 스크립트에 다음 플래그를 설정해야 한다.

선택적으로 첫 번째 마스터 복제본이 생성될 GCE 존을 지정할 수 있다. 다음 플래그를 설정한다.

다음 샘플 커맨드는 europe-west1-b GCE 존에 HA 호환 클러스터를 구성한다.

MULTIZONE=true KUBE_GCE_ZONE=europe-west1-b  ENABLE_ETCD_QUORUM_READS=true ./cluster/kube-up.sh

위에 커맨드는 하나의 마스터로 클러스터를 생성한다. 그러나 후속 커맨드로 새 마스터 복제본을 추가할 수 있다.

새 마스터 복제본 추가

HA 호환 클러스터를 생성한 다음 그것의 마스터 복제본을 추가할 수 있다. kube-up 스크립트에 다음 플래그를 사용하여 마스터 복제본을 추가한다.

HA 호환 클러스터를 시작할 때, 상속되는 MULTIZONE이나 ENABLE_ETCD_QUORUM_READS 플래그를 따로 설정할 필요는 없다.

다음 샘플 커맨드는 기존 HA 호환 클러스터에서 마스터를 복제한다.

KUBE_GCE_ZONE=europe-west1-c KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh

마스터 복제본 제거

다음 플래그가 있는 kube-down 스크립트를 사용하여 HA 클러스터에서 마스터 복제본을 제거할 수 있다.

다음 샘플 커맨드는 기존 HA 클러스터에서 마스터 복제본을 제거한다.

KUBE_DELETE_NODES=false KUBE_GCE_ZONE=europe-west1-c ./cluster/kube-down.sh

마스터 복제 실패 처리

HA 클러스터의 마스터 복제본 중 하나가 실패하면, 클러스터에서 복제본을 제거하고 동일한 존에서 새 복제본을 추가하는 것이 가장 좋다. 다음 샘플 커맨드로 이 과정을 시연한다.

  1. 손상된 복제본을 제거한다.

    KUBE_DELETE_NODES=false KUBE_GCE_ZONE=replica_zone KUBE_REPLICA_NAME=replica_name ./cluster/kube-down.sh
  2. 기존 복제본 대신 새 복제본을 추가한다.

    KUBE_GCE_ZONE=replica-zone KUBE_REPLICATE_EXISTING_MASTER=true ./cluster/kube-up.sh

HA 클러스터에서 마스터 복제에 관한 모범 사례

구현 지침

ha-master-gce

개요

각 마스터 복제본은 다음 모드에서 다음 구성 요소를 실행한다.

또한 API 서버 앞단에 외부/내부 트래픽을 라우팅하는 로드 밸런서가 있을 것이다.

로드 밸런싱

두 번째 마스터 복제본을 시작할 때, 두 개의 복제본을 포함된 로드 밸런서가 생성될 것이고, 첫 번째 복제본의 IP 주소가 로드 밸런서의 IP 주소로 승격된다. 비슷하게 끝에서 두 번째의 마스터 복제본을 제거한 후에는 로드 밸런서가 제거되고 해당 IP 주소는 마지막으로 남은 복제본에 할당된다. 로드 밸런서 생성 및 제거는 복잡한 작업이며, 이를 전파하는 데 시간(~20분)이 걸릴 수 있다.

마스터 서비스와 Kubelet

쿠버네티스 서비스에서 최신의 쿠버네티스 API 서버 목록을 유지하는 대신, 시스템은 모든 트래픽을 외부 IP 주소로 보낸다.

마찬가지로 Kubelet은 외부 IP 주소를 사용하여 마스터와 통신한다.

마스터 인증서

쿠버네티스는 각 복제본의 외부 퍼블릭 IP 주소와 내부 IP 주소를 대상으로 마스터 TLS 인증서를 발급한다. 복제본의 임시 공개 IP 주소에 대한 인증서는 없다. 임시 퍼블릭 IP 주소를 통해 복제본에 접근하려면, TLS 검증을 건너뛰어야 한다.

etcd 클러스터화

etcd를 클러스터로 구축하려면, etcd 인스턴스간 통신에 필요한 포트를 열어야 한다(클러스터 내부 통신용). 이러한 배포를 안전하게 하기 위해, etcd 인스턴스간의 통신은 SSL을 이용하여 승인한다.

추가 자료

자동화된 HA 마스터 배포 - 제안 문서

피드백