주니어 개발자 1호

[Chapter 2]쿠버네티스 스터디 1주차 - ( 클러스터 생성 ) 본문

Server 관련

[Chapter 2]쿠버네티스 스터디 1주차 - ( 클러스터 생성 )

No_1 2022. 7. 3. 02:48

Chapter2 목적

  1. 기본 컴퓨팅 영역 설정 ( 클러스터와 리소스 존재 위치 설정 )
  2. GKE 클러스터 생성
  3. 클러스터와 사용자 인증 정보 얻기
  4. 클러스터에 App 배포
  5. 클러스터 삭제

[ 개념 ]클러스터란?

컨테이너 형태의 애플리케이션을 호스팅하는 물리/가상 환경의 노드들로 이루어진 집합. 컨테이너를 실행하기 위한 일련의 노드 머신 ( Compute Engine VM ( 가상 머신) 인스턴스 )

 

1️⃣ 기본 컴퓨팅 영역 설정

진행 이유

현재 거주지에 유리한 region을 설정하요 사용하기 위함

코드

  1. 컴퓨팅에 대한 region 설정
gcloud config set compute/zone us-central1-a
# us-centrall-a -> region 정보, 다른 region은 아래 url을 참고

🔗region 참고: https://cloud.google.com/compute/docs/regions-zones/#available

2️⃣ GKE 클러스터 생성

진행 이유

인스턴스를 생성하여, Server를 구축 위함

코드

  1. 클러스터 생성
gcloud container clusters create my-cluster
# create 이후 my-cluster -> 자신이 작성한 클러스터 이름 

NAME        LOCATION       ...   NODE_VERSION  NUM_NODES  STATUS
my-cluster  us-central1-a  ...   1.16.13-gke.401  3          RUNNING
# 정상 출력

참고: 클러스터는 네이밍 규칙

  1. 문자로 시작 O
  2. 영, 숫자로 끝남 O
  3. 40자를 초과 x

3️⃣ 클러스터의 사용자 인증 정보 얻기

진행 이유

클러스터를 만든 후 클러스터와 상호 작용하기 위해 사용자 인증 정보가 필요

코드

  1. 클러스터 인증
gcloud container clusters get-credentials my-cluster
# 클러스터 인증 

Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-cluster.
# 클러스터 인증 결과

4️⃣ 클러스터에 애플리케이션 배포

진행 이유

클러스터에 애플리케이션을 배포하기 위함 컨테이너식 애플리케이션을 배포할 수 있음

코드

  1. hello-app 배포
  2. 애플리케이션을 외부 트래픽에 노출 , port 설정
  3. ip 확인, 접속 테스트 ( http:// [ EXTERNAL - IP :8080 ) 접속
  4. 확인 결과 ( Hello, World - 웹에서 확인 )
kubectl create deployment hello-server --image=gcr.io/google-samples/hello-app:1.0
# 해당 이미지를 배포 ( gcr.io/google-samples/hello-app:1.0 )

deployment.apps/hello-server created
# 출력 결과 ( 배포 성공 ) 

kubectl expose deployment hello-server --type=LoadBalancer --port 8080
# 8080포트를 외부에 노출,  type LoadBalancer 는 부하 분산기를 생성 ( Computed Engine )

service/hello-server exposed
# 실행 결과

kubectl get service
# hello-server 배포 결과 확인 ( ip 값이 없으면 기다렸다가 시도

NAME              TYPE              CLUSTER-IP        EXTERNAL-IP      PORT(S)           AGE
hello-server      loadBalancer      xx.xx.xxx.xx      xx.xxx.xxx.xx    8080:31991/TCP    65s
kubernetes        ClusterIP         xx.xx.2x0.x       <none>           433/TCP           5m13s
# 실행 결과 

5️⃣ 클러스터 삭제

진행 이유

클러스터를 삭제하기 위함

코드

  1. 클러스터 삭제
gcloud container clusters delete my-cluster
# my-cluster 삭제

# ( 메세지 ) -> y 엔터

참고 URL

  1. https://cloud.google.com/kubernetes-engine/docs/concepts/cluster-architecture
  2. https://seongjin.me/kubernetes-cluster-components/
  3. https://www.redhat.com/ko/topics/containers/what-is-kubernetes-cluster-management