나만의 k8s 클러스터 구축하기 - #3 GCP GKE편

이번 포스트에서는 GCP GKE를 이용하여 나만의 클러스터를 구축하는 방법에 대해 살펴보겠습니다.

  1. VirtualBox편
  2. Amazon EKS편
  3. GCP GKE편

안내 사항

  • GCP GKE는 클러스터 비용으로 시간당 $0.10, 워커 노드 비용으로 GCE 비용이 청구되오니 유의하시기 바랍니다. 테스트 목적이라면 구축 후 바로 삭제하시기 바랍니다.
  • GCP GKE 버전: 2020년 9월 현재, 기본 1.15를 사용합니다.

설치 방법

유저 등록

GCP 프로젝트에 유저를 등록하고 다음과 같은 역할을 부여합니다.

  • IAM & Admin
  • ADD 버튼 클릭
  • New Members: 등록할 유저 (gmail) 입력
  • Role
    • Kubernetes Engine Admin
    • Service Account User
  • Save

클러스터 생성

등록한 유저로 GCP 콘솔에 접속하여 우측 상단의 터미널 버튼을 클릭하여 Cloud Shell을 실행합니다.

다음과 같은 명령을 이용하여 GKE 클러스터를 생성합니다.

CLUSTER_NAME=core-kubernetes
REGION=asia-northeast3-a

gcloud components update
gcloud config set compute/zone $REGION

gcloud container clusters create $CLUSTER_NAME \
    --enable-autoscaling \
    --min-nodes=1 \
    --num-nodes=1 \
    --max-nodes=3 \
    --node-locations=$REGION \
    --machine-type=n1-standard-4

# 클러스터 확인
kubectl get node
# NAME                                             STATUS   ROLES    AGE     VERSION
# gke-core-kubernetes-default-pool-b5dfd3f2-4f84   Ready    <none>   6m38s   v1.15.12-gke.2

Cluster AutoScaler 설정

# GKE에는 기본적으로 metrics-server가 설치되어 있습니다.
kubectl get pod -nkube-system | grep metrics-server
# NAME                                                        READY   STATUS    RESTARTS   AGE
# metrics-server-v0.3.3-fdc67d4b6-vbfwt                       2/2     Running   0          6m11s

cat << EOF | kubectl apply -f -
# heavy-cal.yaml
apiVersion: apps/v1
kind: Deployment
metadata:
  name: heavy-cal
spec:
  selector:
    matchLabels:
      run: heavy-cal
  replicas: 1
  template:
    metadata:
      labels:
        run: heavy-cal
    spec:
      containers:
      - name: heavy-cal
        image: k8s.gcr.io/hpa-example
        ports:
        - containerPort: 80
        resources:
          limits:
            cpu: 500m
          requests:
            cpu: 300m
---
apiVersion: v1
kind: Service
metadata:
  name: heavy-cal
spec:
  ports:
  - port: 80
  selector:
    run: heavy-cal
EOF

# 바로 Pod의 개수를 늘려봅니다.
kubectl scale deployment heavy-cal --replicas=50

# GKE 워커 노드가 늘어나는지 확인해보시기 바랍니다.
watch kubectl get node

EKS 클러스터 삭제

다음 명령을 이용하여 EKS 클러스터를 삭제하시기 바랍니다.

gcloud container clusters delete $CLUSTER_NAME

유저 삭제

GCP 콘솔을 접속하여 유저를 꼭 삭제합니다.

  • IAM & Admin
  • 등록한 유저 checkbox 클릭
  • REMOVE 버튼 클릭

마치며

쿠버네티스가 구글에서 나온 오픈소스 프로젝트인 만큼 GCP에서는 매우 밀접하게 쿠버네티스와 연결되어 있습니다. GCP를 이용하여 쿠버네티스를 구축하는 경우 클라우드 플랫폼 자체에서 많은 쿠버네티스 기능들을 지원합니다. 여러분들도 GKE를 활용하여 즐겁게 쿠버네티스를 맛보시길 바랍니다.