AOC55

Backend, Devops, Cloud, kubernetes

Container/kubernetes (k8s)

쿠버네티스 :: GCP(VM)에 kubernetes Cluster 직접 구축하기 - 1

aoc55.soft@gmail.com 2022. 3. 12. 19:12

Why (잡담)?

kubernetes를 업무에 사용하게 되면서 공부용으로 나만의 클러스터가 필요하게 되었는데
지금 가지고 있는 노트북은 VM을 3개이상 띄울경우 힘들어하고,
Docker Desktop에 있는 k8s이나 minikube 같은 경우 node가 1개뿐이라 실질적인 클러스터 환경으로 진행하기 어려웠습니다.

그래서 클라우드 서비스를 이용하기로 했고,
GKE 같은 경우 이미 다 구축되어 있는 상태에서 제공해주는 서비스이기에 공부용이라는 목표랑은 안어울려서 (그리고 비쌉...)
결국 직접 GCP에 VM을 찍고 클러스터를 구축하게 되었습니다.

 

목표

구글에서 제공하는 GKE를 활용하는 것이 아니라,

GCP의 Compute Engine을 통해서 VM을 직접 생성한 뒤 Master Node, Worker Node를 직접 생성한 뒤,

Docker Engine 설치 및 Kubeadm을 통해 Kubernetes Cluster를 직접 구현해보겠습니다.

 

Amazon에서 진행해도 GCP Compute Enginge이 -> Amazon EC2로 변경되는 것 뿐이라 대부분 동일할 것으로 보입니다.

 

 

이번편 주요내용

  1. GCP Compute Engine으로 VM 인스턴스 생성하기 (총 4개)
  2. 생성한 VM Instnace에 SSH로 접속 가능하게 하기
  3. 생성한 VM Instance 내에 비밀번호 설정하기

 


 

VM Instance 생성하기

우선 가장 먼저 클러스터에서 Master Node 및 Worker Node로 사용될 VM을 Goolge Compute Engine을 통해서 생성하겠습니다.

 

Google Cloud Platform 가입

Google Cloud Platform

 

Google Cloud Platform

하나의 계정으로 모든 Google 서비스를 Google Cloud Platform을 사용하려면 로그인하세요.

accounts.google.com

 

가입방법은 생략하겠습니다.

참고로 최초 가입하면 무료로 사용 가능한 크레딧이 제공됩니다.

 

 

 

프로젝트 생성

Goole Cloud Plaform에서 새로운 프로젝트를 생성합니다.

 

 

 

 

VM 스펙 정하기

이제 GCP에서 쿠버네티스 클러스터 내 마스터 노드와 워커 노드 역할을 수행할 VM(Compute Engine)을 생성할 차례입니다.

 

본인은 아래와 같은 스펙으로 마스터 노드1, 워커 노드 3 생성하였습니다.

(노드를 많이 생성할 수록... 고사양으로 할수록 당연히 무료 크레딧은 빨리 소모 되니 주의!)

Master Node
- 1개
- 리눅스 우분투 18.04 LTS
- e2-medium(cpu2, 4GB)

Worker Node
- 3개 
- 리눅스 우분투 18.04 LTS
- e2-small(cpu2, 2GB)

 

 

Master Node 생성 (1개)

개인적으로 인스턴스 이름은 k8s-master로 네이밍했고, e2-medium 및 부팅디스크로 우분투 18.04를 설정하였습니다.

 

 

 

Worker Node 생성 (3개)

인스턴스 이름은 k8s-worker1, k8s-worker2, k8s-worker3으로 네이밍 하였습니다. (갠취)

위의 마스터 노드 생성과 다른점은 머신 유형을 e2-small로 변경하였습니다만...  (알뜰..)

 

(나중에 클러스터에 운영중에 성능이 부족하거나 하면 잠시 내린 후에 Scale Up 해주면 됩니다)

 

위 생성과정을 반복하여, 워커노드로 사용할 VM을 총 3개 생성해줍니다.

 

 

 

생성된 인스턴스 목록 (master1, worker3)

총 4개의 VM이 생성된걸 확인할 수 있습니다.

 

이제 kubernetes 클러스터에 노드로 역할을 수행할 VM(마스터1, 워커3) 은 모두 생성되었습니다.

 

 


 

VM에 SSH로 내 터미널에서 접속하기 

 

이제 생성된 VM에 대해서 일일히 구글 Cloud 페이지를 통해서 접속하려면 매우 귀찮으니,

본인의 터미널에서 바로 접속 및 제어 할 수 있도록 SSH 설정을 진행하도록 하겠습니다.

 

참고 :: 아래 내용은 MAC OS 기준으로 작성 되었습니다.

 

 

공개키/비밀키 생성하기

공개키, 비밀키를 생성하는 방법은 따로 기술하지 않겠습니다.

본인 PC 환경에 따라 공개키, 비밀키를 생성하는 방법은 구글에 검색하면 친절하게 나오니 따라서 생성하면 됩니다.

 

 

GCP에 공개키 등록하기

본인이 생성했거나, 혹은 이미 가지고 있는 공개키를 구글 클라우드 콘솔에 등록을 해줍니다.

(그래야 내 터미널에서 나의 비밀키를 통해서, 구글 클라우드에 접속이 되겠죠?)

공개키는 한번만 등록 해주면 모든 생성한 VM Instance에 사용이 가능합니다.

 

 

위의 이미지처럼 메타데이터의 메뉴에 들어가서 공개키 내용을 복사해서 붙여넣기 한 뒤 저장하면 됩니다.

- 이때 등록하는 키는 공개키로 보통 id_rsa.pub 혹은 XXX.pub으로 파일로 존재할 것입니다.

- 공개키 내용은 "ssh-rsa ... " 로 시작하는데 전체를 복사해서 붙여넣기 하면 됩니다.

 

 

제대로 등록되었다면 아래와 같이 조회가 될 것입니다.

여기서 사용자 이름은 ssh를 연결할때 사용되니 기억해주세요.

 

 

 

 

SSH로 VM 인스턴스 접속하기

VM의 외부 IP 확인

키 등록까지 마쳤으니 이제 SSH로 접속할 차례입니다.

SSH로 접속하기 위해서는 해당 VM의 외부 IP가 필요한데, 콘솔 화면에서 조회하면 됩니다.

(VM이 동작중이지 않으면 외부 IP가 사라집니다)

 

외부IP 확인하는 방법

 

SSH 접속

터미널에서 아래 명령어를 통해서 VM에 접속하도록 합니다.

 ssh -i 비밀키 이름@외부IP
 
 # 예시
 # ssh -i .ssh/id_rsa aoc55@34.167.XX.XX
  • 비밀키 : 위에서 생성한 비밀키로 기본 이름은 "id_rsa"인 경우가 많습니다. (mac의 경우 기본적으로 .ssh/ 디렉토리에 있습니다)
  • 이름 : 위의 구글 콘솔에서 공개키 등록하는 화면에서 확인 가능합니다.
  • 외부 IP : 역시 구글콘솔에서 해당 VM의 외부 IP 확인 가능합니다.

 

접속화면 예시

접속하게 되면 아래와 같은 VM 로그인 정보를 확인할 수 있습니다.

  • 참고로 저는 사용하는 공개키/비밀키가 여러 개라 "id_rsa"라는 이름의 비밀키가 아닌 다른 이름의 비밀키를 사용했습니다.

 

 

 


 

 

VM 내 root 계정 비밀번호 설정하기

 

앞으로 쿠버네티스 설치는 root 권한으로 진행할 예정입니다.

 

root 계정 비밀번호 설정

위의 SSH 로그인 후 아래와 같이 root 계정의 비밀번호를 지정하겠습니다.

sudo passwd

 

root 로그인 확인

su -

위 명령어 입력 후 지정한 패스워드를 입력하면 정상적으로 root 계정으로 전환된 것을 확인할 수 있습니다.

 

 

다른 VM도 동일하게 반복해서 비밀번호 설정

지금까지 master node 역할을 수행할 VM에 root 계정 비밀번호를 설정하였는데요.

 

위에서 생성한 다른 VM (worker node 1~3)에도 동일하게 ssh를 통해서 접속한 뒤(접속시에 뒤에 외부 IP만 바꾸면 되겠죠?),

동일하게 root 계정 비밀번호를 설정해주시면 됩니다

 


 

마무리

다음 편에는 VM 생성이 모두 완료 되었으니, 쿠버네티스 설치를 위한 준비를 시작하겠습니다.

https://aoc55.tistory.com/53