[GCP] Google Kubernetes Engine 사용하기

2020. 6. 26. 15:26Engineering/Google Cloud Platform

Content

1. Google Kubernetes Engine (GKE) 클러스터 생성
2. GKE API 사용 설정

 


Google Kubernetes Engine(GKE)를 사용하는 방법을 알아봅니다.


1. Google Kubernetes Engine (GKE) 클러스터 생성

 

GKE 클러스터 생성에 대한 자세한 방법은 공식 가이드(https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster) 참고하세요.

 

1) Kubernetes Engine API 사용 설정

GKE 클러스터 서비스를 사용하려면, GKE API 활성화를 먼저 해주셔야 합니다. 

GKE 클러스터 생성 가이드 문서(https://cloud.google.com/kubernetes-engine/docs/how-to/creating-a-cluster)에서 'Google Kubernetes Engine API 사용 설정' 버튼 클릭합니다.

 

 

아래 사진과 같이 콘솔로 리다이렉션 됩니다.

'사용설정' 버튼을 누르면 관련 설정이 자동으로 실행됩니다.

 

 

API 사용에 대한 자동 설정이 완료되길 조금 기다립니다.

 

 

설정이 완료 되면 콘솔 > Kubernetes Engine API 개요 페이지가 아래와 같이 조회 됩니다.

 

 

2) Kubernetes 클러스터 만들기

API 설정이 완료되었으니 본격적으로 GKE 클러스터를 생성해보겠습니다.

콘솔을 통해 UI기반으로 손쉽게 생성 가능 하며,

gcloud 명령을 통해 생성하려는 경우 gcloud container clusters create 명령어 사용 방법(https://cloud.google.com/sdk/gcloud/reference/container/clusters/create) 참고하시기 바랍니다.

 

 

처음 GKE 접하는 경우, gcloud 클러스터 생성 명령의 다양한 옵션값을 이해하기에 벅찰 있습니다.

따라서 저는 콘솔을 이용해 UI 기반으로 클러스터를 생성해 보겠습니다.

(콘솔에서 생성할 클러스터 정보를 입력하면, 입력한 정보대로 클러스터를 생성할 있는 gcloud 명령을 생성해주는 기능을 제공하고 있습니다.)

 

 

콘솔에서 좌측 제품 메뉴 탭에서 'Kubernetes Engine'으로 진입합니다.

생성된 클러스터가 없는 경우, 아래와 같이 클러스터 생성을 유도하는 버튼이 노출됩니다.

'클러스터 만들기' 클릭합니다.

 

 

그럼 바로 생성할 클러스터 기본사항 정보를 입력하는 화면이 노출되는데요.

전에!

GKE에서 생성할 있는 클러스터 종류 대해 알아보고 갑시다.

GKE에서 생성 가능한 클러스터 종류(https://cloud.google.com/kubernetes-engine/docs/concepts/types-of-clusters) 크게 3가지 입니다.

  • 단일 영역 클러스터 : 하나의 영역 내에 하나의 클러스터만을 생성합니다.
  • 멀티 영역 클러스터 : 여러 영역에 워커들을 분산 배포하여 워커 가용성을 높일 있습니다. , 마스터 영역은 하나의 영역에만 배포 합니다.
  • 리전 클러스터 : 여러개 영역에 마스터와 워커 복제본들을 분산 배포합니다. 마스터 가용성까지 높일 있습니다. 그러나 여러 영역의 compute engine 사용 하므로 가격이 높습니다.

 

 이러한 다양한 클러스터 종류는, 클러스터 기본사항 정보의 위치 유형 어떻게 선택하느냐에 따라 결정됩니다.

  • 위치 유형 :
    • 영역 선택 시 : 단일 영역 클러스터 또는 멀티 영역 클러스터 생성 가능
      • '노드 위치 지정'에서 추가 영역을 체크하는 경우 멀티 영역 클러스터가 .
    • 리전 선택 시 : 리전 클러스터 생성 가능
      • '노드 위치 지정'에서 추가 영역을 체크하여 마스터와 워커를 복제할 영역 선택

 

저희는 멀티 영역 클러스터를 만들어 보겠습니다.

4.-2)에서 지정한 us-west1-a 기본 영역을 마스터 영역으로 하고,

us-west1-b 영역을 워커 복제본을 분산시킬 추가 영역으로 지정하겠습니다.

 

위치 유형을 '영역' 타입으로 체크 하고,

영역 선택 값을 us-west1-a 선택하여 마스터 영역을 설정합니다.

'노드 위치 지정' 체크하고, us-west1-b 영역을 체크하여 추가 영역을 지정합니다.

 

 

 

다음으로 마스터 버전을 선택해야 합니다.

마스터 버전에는 2가지 종류가 있습니다.

 

  • 출시 채널 : 버전이 나올 마다 GKE 자동 업그레이드를 해줍니다.
    채널 별로 업그레이드 버전 출시 속도가 다르므로 채널 특징을 확인하여 원하는 채널을 선택 합니다. https://cloud.google.com/kubernetes-engine/docs/concepts/release-channels
  • 정적 버전 : GKE 자동 업그레이드를 사용하지 않습니다. 필요시 업그레이드를 수동으로 수행합니다.

 

희는 테스트용 클러스터이므로, 정적 버전을 사용하겠습니다.

 

 

콘솔 왼쪽 메뉴탭을 보시면 노드풀, 클러스터 탭이 있는 것을 확인 있습니다.

각각의 탭에서 클러스터 구성 정보를 세밀하게 설정할 있습니다.

자세한 설정은 차차 알아 가기로 하고,

이번 글에서는 추가 설정 변경 없이 default 설정 그대로 클러스터를 생성해 보겠습니다.

바로 '만들기' 버튼을 클릭합니다.

 

 

일정 시간 클러스터 생성이 완료 됩니다.

클러스터 노드풀 default 설정은 클러스터당 vCPU 1개를 갖는 워커 노드 3개를 생성하도록 설정되어 있습니다.

그런데 저희가 생성한 클러스터는 멀티 영역 클러스터로 us-west1-a us-west1-b 2영역에 워커 노드 복제본을 배치 하게 됩니다.

따라서 클러스터의 코어수가 vCPU 6 (=vCPU 1 X 노드 3 X 2 영역)임을 확인할 있습니다.

 

 

2. Kubectl 설정

Kubernetes 클러스터를 본격적으로 사용하려면, kubectl 명령어를 사용할 있어야겠죠?

Kubectl api들을 사용하기 위한 설정을 하겠습니다.

자세한 내용은 가이드 문서(https://cloud.google.com/kubernetes-engine/docs/how-to/cluster-access-for-kubectl) 참고 하세요.

 

 

Kubectl api 사용을 위해서는 Kubeconfig 파일이 필요합니다.

Gcloud 명령을 사용해 클러스터를 생성하는 경우 kubeconfig 파일의 셋팅이 자동으로 업데이트 됩니다.

그러나 콘솔을 통해 클러스터를 만든 경우, kubeconfig 자동 업데이트 되지 않습니다.

 

저희는 콘솔을 통해 클러스터를 만들었기 때문에,

Kubectl api 사용 설정을 수동으로 해야만 kubectl 명령을 사용할 있습니다.

 

Kubectl api 사용을 수동으로 설정하는 방법은 아래와 같습니다.

아래와 같은 gcloud 명령어가 kubeconfig파일을 자동으로 업데이트 합니다.

$ gcloud container clusters get-credentials eyoh-first-cluster

 

이제부터는 kubectl 명령을 사용할 있습니다.

Kubectl 사용하여 저희가 생성한 클러스터의 노드 정보들을 확인해 보겠습니다.

$ kubectl get nodes

 

 

만약 여러개의 클러스터를 생성한 경우,

kubectl 명령을 내릴 클러스터 대상을 변경해야 필요가 있다.

때는 kubectl 명령을 내리고자 하는 대상 클러스터의텍스트로 변경하면 됩니다.

수동 kubectl 사용 설정 명령과 동일합니다.

$ gcloud container clusters get-credentials [CLUSTER_NAME]

 

 

또는 kubectl 명령의 '--cluster' 옵션으로 kubectl 명령을 전달하고자 하는 대상 클러스터를 지정할 수도 있다고 합니다.

$ kubectl get nodes --cluster eyoh-first-cluster