Skip to main content

Tutorial

이번 문서에서는 k8s 튜토리얼을 따라가며, 쿠버네티스의 실질적인 개발 과정과 운영 과정을 학습해보겠습니다.


Minikube

0. 개요 및 설치 방법

참조: Minikube start

  • 목적: minikube로컬 환경에서 쿠버네티스 클러스터를 빠르게 구축하고 테스트할 수 있는 도구입니다.
  • 사용법: Docker 컨테이너 혹은 VM 환경이 준비되었다면, minikube start 명령어를 통해 쿠버네티스 클러스터를 구축할 수 있습니다.
  • 설치: https://minikube.sigs.k8s.io/docs/start/ 혹은 OS 환경에 맞는 설치 방법을 참고합니다.

저는 macOS 환경이므로, minikubebrew를 통해 설치했습니다.

brew install minikube

minikube-install

1. Cluster 시작하기

minikube status

minikube 설치가 완료된 이후, CLI 리스트를 확인했습니다.

minikube-log

minikube start 명령어를 실행하면, 기본 이미지가 다운로드되고, 쿠버네티스 클러스터가 구축됩니다.

minikube start

minikube-start minikube-done

2. Cluster 상태 확인

minikube 명령어

이제 minikube status와 다양한 명령어를 사용하여 구축된 클러스터를 살펴보겠습니다.

minikube status

minikube-status

이전 글에서 살펴본 Control Plane과 각 요소의 상태를 확인할 수 있습니다.

minikube dashboard

마찬가지로 minikube dashboard 명령어를 통해 클러스터의 상태를 확인할 수 있습니다.

minikube-dashboard-1 minikube-dashboard-2 minikube-dashboard-3 minikube-dashboard-4

minikube dashboard에서 NodePod의 상태,

kubectl 명령어

kubectl은 쿠버네티스 클러스터를 관리하는 CLI 도구입니다.

kubectl 명령어를 사용하여 쿠버네티스 클러스터의 상태를 확인할 수 있습니다. minikube-kubectl

kubectl의 기능은 추후에 자세히 살펴보도록 하겠습니다.

3. Cluster 배포하기

일단 쿠버네티스 클러스터를 구동시키면, 그 위에 컨테이너화된 애플리케이션을 배포할 수 있다. 그러기 위해서, 쿠버네티스 디플로이먼트 설정을 만들어야 한다. 디플로이먼트는 쿠버네티스가 애플리케이션의 인스턴스를 어떻게 생성하고 업데이트해야 하는지를 지시한다. 디플로이먼트가 만들어지면, 쿠버네티스 컨트롤 플레인이 해당 디플로이먼트에 포함된 애플리케이션 인스턴스가 클러스터의 개별 노드에서 실행되도록 스케줄한다.

출처: kubectl을 사용해서 디플로이먼트 생성하기

위 내용에서 제가 이해한 바는 다음과 같습니다.

  1. 배포를 위한 설정 파일 작성
  2. 배포할 애플리케이션 인스턴스를 생성
  3. kubectl 명령어를 사용하여 배포를 실행

Deployment

위 설명을 보고 다음 두가지 질문이 들었습니다.

Q k8s의 디플로이먼트 Deployment는 일반적인 배포와 다른 의미의 용어인가?

공부가 조금 더 필요한 것 같아, 위 질문을 중심으로 더 알아보았습니다.

쿠버네티스에서 “Deployment”는 **일반적인 배포deployment**와는 다르게 특정한 기술적 리소스 이름입니다. Deployment는 쿠버네티스의 리소스(Resource) 종류 중 하나입니다.

간략히 알아보자면, 리소스는 쿠버네티스가 관리하는 개체를 의미한다고 합니다. 쿠버네티스에는 여러 리소스 타입이 있습니다:

  • Deployment
  • Service
  • Pod
  • ReplicaSet
  • ConfigMap
  • Secret
  • StatefulSet
  • DaemonSet
  • Job / CronJob

여기서 DeploymentPod의 생성/복제/업데이트/롤백을 관리하는 상위 리소스입니다. 즉, “배포”라는 일반적 개념을 구현한 오브젝트 이름이라고 보면 됩니다.

Deployment의 역할

  • 컨테이너 이미지로 Pod를 생성
  • Pod를 일정 개수 유지(Replication)
  • 롤링 업데이트 수행
  • 문제가 생기면 자동으로 복구(Self-healing)
  • 이전 버전으로 롤백 가능

즉, Deployment는 애플리케이션의 원하는 상태Desired State선언하는 쿠버네티스 리소스라고 합니다.

리소스 타입에 대해서 추후 더 자세히 살펴보겠습니다.