카테고리 없음

쿠버네티스 강의 - 1, 2

eunGI 2023. 4. 9. 16:25

*해당 강의의 목표*

컨테이너가 우엇인지, 쿠버네티스가 무엇인지를 다룰 것

쿠버네티스 이해 -> 배포하고 사용 가능 -> 쿠버네티스에서 컨테이너 배포 가 가능하도록 하는게 우리의 목표


쿠버네티스

-> 도커 컨테이너를 위한 오픈 소스 오케스트레이션 시스템 = 컨테이너를 관리하는 플랫폼

(*오케스트레이션: 여러 개의 컴퓨터 시스템, 애플리케이션 및/또는 서비스를 조율하고 관리하는 것으로, 여러 개의 작업을 함께 연결하여 크기가 큰 워크플로나 프로세스를 실행하는 방식)

-> 컨테이너를 분산 배치하고, 상태 관리, 구동 환경 관리를 해주는 도구이지 도커를 다루는 도구가 아니다

-> 쿠버네티스는 도커와 항상 함께 가는게 아님, 그냥 도커말고 다른 컨테이너 런타임를 통해 컨테이너를 관리할 수도 있음

 

가상머신 vs 컨테이너

출처: 유데미 - 【한글자막】 DevOps (데브옵스) : Kubernetes 완전 정복 강의 자료

-> 가상머신은 하이퍼바이저에 의해 1개의 host os를 여러개의 게스트가 나눠서 사용 (분리된 환경 만들어줌)

(*하이퍼바이저 -> 하나의 시스템 상에서 여러 대의 가상 컴퓨터를 구동할 수 있도록 해줌)

-> 컨테이너는 도커엔진을 이용해 하나의 host os에 여러 개의 컨테이너가 나눠서 사용

-> 가상머신은 각각의 가상 컴퓨터마다 os를 각각 설치해줘야 함 = 컨테이너보다 무겁

 

도커 -> 가장 널리 사용되는 컨테이너 런타임 소프트웨어

(컨테이너 -> 구동하려는 앱을 실행할 수 있는 환경까지 감싸서 어디서든 쉽게 실행 가능하도록 하는 것)

 

출처: https://www.samsungsds.com/kr/insights/220222_kubernetes1.html


쿠버네티스 셋업

1. 로컬에 쿠버네티스 설치 -> 미니큐브 설치

(미니큐브, 도커는 1개의 노드만 스핀 업해서 테스트 용으로 적합, kops, kubeadm은 실제로 클러스터를 구성할 때 이용)

https://minikube.sigs.k8s.io/docs/start/

windows package manager를 이용해 minikube 설치

*windows package manager = winget (윈도우용 패키지 관리 프로그램, 최근 업데이트된 윈도우부턴 기본적으로 설치되어있음)

minikube 설치 확인 (쿠버네티스 클러스터에 명령을 내리기 위해 필요한 쿠버네티스 커맨드 라인 도구인kubectl 또한 설치됨)

*도커 데스크탑이 이미 설치되어 있으면 minikube가 기본으로 docker driver를 사용

 

클러스터 생성 -> 쿠버네티스는 미니큐브가 생성하는 vm에서 실행 (이미지 다운)

 

출처: https://subicura.com/k8s/guide/kubectl.html
출처: https://may9noy.tistory.com/302

kubectl 명령어 (+ create와 apply의 차이가 궁금해서 찾아봄) 

pod 확인

 

에코서버로 배포 , 노드포트로 노출 (=접근할 수 있는 서비스 생성)

 

minikube service hello-minikube 로 에코 서비스에 접근할 수 있는 포트와 ip 주소 확인 후 접속


minikube, docker client -> for production cluster

kops, kubeadm -> for real cluster

kops의 대안 -> kubeadm, aws에서의 최고의 tool은 kops


kops 

-> aws에서 쿠버네티스 설정할 때 사용하는 툴

-> k8s operation 의 약자

-> k8s 설치, 업그레이드 및 관리할 수 있는 툴

 -> 맥, 리눅스에서만 동작 (윈도우의 경우, 베이그런트와 같은 도구를 이용해 가상머신을 먼저 설치해야함)

1. 베이그런트를 이용해 리눅스 환경 구성

2. kops 설치 (+x 옵션)

3. pip을 이용해 aws cli (AWS Command Line Interface) 설치

4. aws 로그인, kops에 사용할 사용자 추가

5. 버킷, 라우트 설정

6. kops를 이용해 클러스터 구성 


 

 

도커 이미지 구축하기

 

이미지와 컨테이너 개념

dockerfile 내부는,, 블로그 한 번 살펴봤는데 단번에 이해가 쉽지 않다 ㅠ 차차 알아가야겠다..

 

docker-demo 깃허브 클론

 

깃허브에서 가져온 컨테이너 이미지 빌드

 

dockerfile로 설정한 것들이 제대로 생성?되었다는 것 같음

 

docker run으로 내가? 만든 이미지 실행

 

curl 명령어를 이용하여 데이터를 가져오면 index.js에 있는 내용을 확인할 수 있음


도커 허브에 컨테이너 푸시

쿠버네티스에서 이미지를 사용하려면, 도커 허브와 같은 레지스트리에 이미지를 푸시해야함 

하나의 컨테이너에서는 하나의 프로세스만, 볼륨을 이용해 데이터가 손실되지 않게 하는 법 강의 후반부에 배움

 

도커 허브 사이트에서 저장소 만들기

 

위에서 만든 이미지에 저장소 태그 

 

태그했더니 이름이 바뀌었다

 

해당 이미지로 저장소에 push -> 쿠버네티스에서 이미지 사용하기 위한 준비 끝


쿠버네티스에서 앱 실행하기

 파드: 쿠버네티스에서 실행되는 앱, 파드에는 앱을 구성하는 결합된 컨테이너가 1개 이상 있을 수 있음 

미니큐브 실행 중인거 확인

 

yml 파일 이용해서 파드 생성 

 

클러스터를 설치할 때 시작한 파드와 방금 만든 파드를 확인 

 

포트 포워딩 이용해서 파드에 접근

???

작동 여부 테스트 

 

포트 노출 

 

클러스터에 앱을 실행하기 위해서 클러스터 ip 확인