본문 바로가기

공부기록/42 Seoul

[ft_services] Overview 및 환경 설정

ft_server에서는 도커를 이용해 하나의 컨테이너 안에서 wordpress, phpMyAdmin, MySQL을 서비스했었다.  

ft_services는 각 서비스마다 컨테이너를 만들고, 쿠버네티스를 이용해 각 서비스들을 관리할 수 있게 만들어 하나의 "클러스터"를 구현하는 과제이다.

 

일단 subject PDF 부터 다 읽었다. 언제나처럼 무슨 말인지 모르겠다.
ft_server 내용도 많이 까먹어서 기록을 제대로 안해둔걸 후회중. 
망망대해를 탐험하는 기분으로 시작했고, 이번에는 기록을 최대한 남겨가면서 진행하려고한다.
일단 쿠버네티스의 개념을 이해하고, 시작하기 전에 필요한 프로그램에 어떤 것들이 있는지 살펴봤다.

 


쿠버네티스 개요

쿠버네티스는 클러스터 내부의 Pod 들을 감시하면서, 문제가 생겨 서비스가 꺼지면 자동으로 되살린다.

내가 원하는 어떤 상태(State)를 yaml 파일로 정의해서 알려주면, 쿠버네티스는 클러스터를 감시하면서 그 상태를 유지할 수 있게 해준다는 것이 핵심이다.

초반에 개념을 이해하기가 정말 어려운데 여러 자료를 본 결과 아래 링크가 적당한 깊이로 이해하는데 가장 큰 도움이 됐다. 공식문서도 이걸 읽고 나서 보는게 낫다. 쿠버네티스 관련 자료를 이것저것 보다보면 모르는 용어가 너무 많아서 이해가 안되는데, 이 글을 읽으면서 머리속에서 용어정리도 자연스럽게 할 수 있었다.

 

 

쿠버네티스 시작하기 - Kubernetes란 무엇인가?

쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기

subicura.com


그 외 망망대해에서 주워담은 trivia (?)

  • 왜 k8s가 kubernetes의 줄임말인가
    • k"ubernete"s에서 가운데 8글자를 숫자 8로 바꿔버린 줄임표현이라고 한다... 상상도 못한 정체... numeronym 이라고 이런 줄임법을 말하는 용어도 있더라.
  • ft_server에서 썼던 debian:buster와 이번 과제의 alpine linux의 차이는
    • 1. 데비안
      • 특징: 데비안의 특징은 패키지설치 및 업그레이드에 있다.
      • 높은 안정성을 갖고 있으며, 패키지 설치와 업그레이드 혹은 다른 패키지의 의존성등을 apt를 이용하여 쉽게 설정할 수 있다.
      • 그러므로 서버용으로 적합한 리눅스
      • debian:buster는 10버전
    • 2. Alpine linux
      • 보안, 단순성, 자원 효율성을 위해 설계된 musl, 비지박스 기반의 리눅스 배포판이다.
      • 크기가 정말 작다. 작은 크기 때문에 빠른 부팅 시간을 제공하는 컨테이너에 흔히 사용하며 도커의 기반이미지로 인기가 많다.
      • 패키지 설치에는 apk 사용

필요한 프로그램들 

과제 진행 환경 : 개인 맥북 (MacOS Catalina 10.15.7)

 

과제는 로컬에서 진행되므로, 진짜 쿠버네티스 대신 minikube라는 프로그램을 사용할 것이다. 그리고 이 모든 것은 Virtual Box를 설치한 후 가상환경 안에서 진행된다.

 

VirtualBox 설치

  • brew로 설치하는 방법과 공홈에서 다운로드해서 설치하는 방법이 있음.
  • 아무도 brew로 안하는 듯. 나도 공홈에서 설치함.
  • CLI에서 virtualbox --help 로 설치가 잘 됐나 확인. 첫번째 줄에서 버전을 확인할 수 있다.

minikube 설치

  • minikube는 쿠버네티스를 로컬에서 실행할 수 있게 해주는 도구이다.
  • 쿠버네티스의 모든 기능을 테스트할 수는 없지만 쿠버네티스의 기본적인 기능을 익히고 친해지는데 가장 좋은 도구
  • 설치 및 버전 확인
$ brew install minikube
$ minikube version
  • 기본적인 minikube 명령어들
# 가상머신 시작
minikube start --driver=virtualbox

# 특정 k8s 버전 실행
minikube start --kubernetes-version=v1.20.0

# 상태확인
minikube status

# 정지
minikube stop

# 삭제
minikube delete

# ssh 접속
minikube ssh

# ip 확인
minikube ip

# dashboard 열기
minikube dashboard

 

kubectl 설치

  • kubectl 은 쿠버네티스 클러스터에 명령을 전달하기 위한 프로그램
  • 애플리케이션을 배포하고, 클러스터 리소스를 검사 및 관리하고, 로그를 볼 수 있다.
  • 설치 및 버전 확인
$ brew install kubectl
$ kubectl version

💡이런 오류가 발생했었는데,

The connection to the server localhost:8080 was refused - did you specify the right host or port?

virtualbox를 완전히 삭제한 후 다시 설치한 뒤, minikube start --driver=virtualbox 로 미니큐브를 실행하고 난 후 kubectl 버전확인을 해보니 잘 나왔다.

 

minikube start 성공

* FTP는 MacOS의 finder에서도 테스트할 수 있다고 들어서 일단 filezilla는 설치하지 않기로 했다.

filezilla도 설치해야된다고 한다.

  • 그냥 구글에 검색해서 설치하면 됨

 

구현할 클러스터를 도식화한 그림