DevOps/k8s

[k8s] 명령어 8개로 가장 빠르게 클러스터 생성하고 쿠버네티스 모니터링까지

Sophie소피 2024. 2. 16. 10:29

Introduction

쿠버네티스는 뛰어난 기능을 제공하지만, 처음 시작하기는 조금 복잡할 수 있습니다. 하지만 Minikube를 이용하면 로컬 환경에서 손쉽게 쿠버네티스 클러스터를 만들 수 있습니다.

이번에는 단 아래의 8개의 명령어로 클러스터를 만들고, 가장 빠르게 모니터링까지 하는 방법에 대해 안내하겠습니다.

쿠버네티스를 처음 다뤄보는 분들에게는 Minikube가 정말 좋은 선택일 거예요.

Minikube를 사용하면 로컬 환경에서 간단하게 쿠버네티스 클러스터를 만들 수 있답니다. 

 

설치 전 요구 사항

Docker Desktop 설치

Docker Desktop은 Minikube에서 로컬 Kubernetes 클러스터를 실행하기 위해 필요합니다.

먼저 Docker Desktop을 설치해야 해요.

공식 Docker Desktop 페이지에 들어가서 본인의 운영체제에 맞는 버전을 다운로드하고 설치해주세요.

설치가 완료되면 Docker Desktop을 실행하고 설정을 해주어야 해요.

  • Docker Desktop 공식 페이지 접속 > 본인 OS에 맞게 설치

 

 

 

Docker Desktop 설정

  • Docker Desktop을 실행한 후, 상단 좌측 메뉴 바에서 "Extension"에서 "Setting"을 선택합니다.

 

 

 

 

Kubectl 설치

  • Homebrew를 사용하여 kubectl을 설치합니다.
brew install kubectl

kubectl은 Kubernetes API와 상호작용하여 클러스터의 리소스를 조작하는 명령어 도구입니다.

 

 

 

Minikube로 클러스터 구성하기

  • Homebrew를 사용하여 Minikube를 설치합니다.
brew install minikube

 

이렇게 하면 Minikube가 설치됩니다.

Minikube를 사용하면 로컬 환경에서 쿠버네티스 클러스터를 쉽게 만들고 관리할 수 있습니다.

 

 

 

Minikube 실행 클러스터 시작

  • Minikube를 시작하여 Kubernetes 클러스터를 구축합니다.
minikube start

이렇게 하면 Minikube가 시작되고 로컬 환경에서 Kubernetes 클러스터가 구축됩니다.

 

 

Pod 생성 해보기

 

Pod 란?

  • Kubernetes에서 배포할 수 있는 최소 단위이며, 하나 이상의 컨테이너로 구성된 그룹입니다.
  • 각 Pod는 고유한 IP 주소를 가집니다.

Pod 설정 파일

  • 아래의 명령어를 통해 Pod를 생성할 수 있습니다.
kubectl apply -f - <<EOF
apiVersion: v1
kind: Pod
metadata:
  name: nginx
spec:
  containers:
  - name: nginx
    image: nginx:1.14.2
    ports:
    - containerPort: 80
EOF 4

위의 설정 파일은 YAML 형식으로 작성되어 있습니다. kubectl apply -f 명령어는 표준 입력으로부터

YAML 내용을 읽어와 파드를 생성합니다. 이 설정 파일에서는 하나의 컨테이너를 가지는 nginx Pod를 정의하고 있습니다.

 

 

Pod 생성 확인

  • 현재 클러스터 내에서 실행 중인 Pod의 목록을 확인하기 위해 아래 명령어를 사용할 수 있습니다.
kubecrl get pods -A

결과에서 nginx는 Pod의 이름을 나타내며, 1/1로 모든 컨테이너가 준비되어 있고, 상태는 Running으로 실행 중임을 알 수 있습니다.

 

 

위 명령어는 각 Pod의 이름, 준비 상태, 상태, 재시작 횟수 및 생성 후 경과 시간을 나타냅니다.

결과에서 nginx는 Pod의 이름을 나타내며, 모든 컨테이너가 준비되어 있고, 실행 중인 상태임을 알 수 있습니다.

이제까지 5개의 명령어로 쿠버네티스 클러스터를 생성하고 Pod를 구성했습니다.

 

 

다음 단계에서는 와탭 모니터링을 활용하여 단 3개의 명령어로 간편하게 모니터링을 적용하는 방법을 소개하겠습니다. 

 

쿠버네티스 프로젝트 생성

  • 와탭계정을 로그인하여 쿠버네티스 프로젝트를 생성합니다.
  • 구글 소셜 로그인으로 편리하게 로그인할 수 있습니다. 

 

  • 프로젝트 이름, 데이터 서버 지역, 타임 존 등의 정보를 입력합니다.

 

 

 

쿠버네티스 에이전트 설치

  • 엑세스 키를 확인하여 발급받습니다.

 

  • VERSION과 CONTAINER-RUNTIME 환경을 확인하기 위해 아래 명령어를 실행합니다.
kubectl get node -o wide 

 

 

 

  • VERSION과 CONTAINER-RUNTIME에 맞는 YAML을 선택하고 파일을 다운로드합니다.

  • 아래 명령어를 실행하여 환경에 맞는 설치 환경 YAML 파일을 다운로드합니다.
kubectl apply -f <download.yaml>

 

 

 

  • 설치가 완료되면 와탭 모니터링 네임스페이스 내에 master agent와 node agent용 Pod가 각각 생성되었는지 확인합니다.
kubectl get po -n whatap-monitoring

 

  • 설치가 완료되면 와탭 웹사이트에서 컨테이너 맵에 아래의 화면과 같이 표시됩니다.  쿠버네티스 에이전트가 성공적으로 설치되었음을 나타냅니다.

 

 

 

와탭 쿠버네티스 모니터링 대표 기능

컨테이너 맵 그룹화

이미지에서는 Pod를 Namespace 단위로 그룹화하여 표시했습니다.

이 그룹화 기능을 사용하면 Kubernetes 클러스터 내에서 관련된 리소스들을 논리적으로 분리하여 모니터링할 수 있습니다.

나중에 쿠버네티스 교육을 할 때, 해당 화면을 사용하여 퀴즈를 내보려고 합니다. 

예를 들어, 화면에 나타난 그룹화된 이미지를 보고 Pod를 Namespace 단위로 그룹화한걸까요? Node 단위로 그룹화한걸까요? 등등..

이런 질문은 실제 환경에서 쿠버네티스가 어떻게 활용되는지에 대한 이해를 높일 수 있을 것 같습니다.

 

 

 

네임스페이스 프로젝트

클러스터에 구성되어있는 네임스페이스 단위로 분리하여 프로젝트를 구성할 수 있습니다. 클러스터 프로젝트의 하위 개념인 것이죠.

다수의 팀이나 프로젝트가 동시에 클러스터를 사용할 때 리소스 충돌을 방지하고, 네임스페이스 기준으로 리소스를 더욱 효율적으로 관리할 수 있도록 도와줍니다. 

 

오브젝트 매니페스트

쿠버네티스의 오브젝트 매니페스트는 YAML 또는 JSON 형식으로 작성되며, 클러스터의 상태를 정의하고 관리하는 데 사용됩니다.

와탭 제품은 클러스터의 오브젝트 매니페스트 데이터를 자동 수집하는 기능이 있습니다.  yaml 파일 변경 사항을 비교하고  과거의 모든 yaml을 확인하므로 운영환경에서 배포 시 자주 발생하는 실수들을 사전에 방지할 수 있는 것에 도움을 받을 수 있었습니다.  

 

 

Warning 이벤트가 발생할 때, 해당 데이터는 자동으로 추가 저장되므로, 이벤트가 발생한 리소스를 추적하여 문제를 해결할 수 있습니다. 이를 위해 해당 리소스에 대한 yaml 파일을 확인하고, 변경된 부분을 비교하여 문제를 해결할 수 있습니다.

 

 

비교하기 버튼을 통해 두 날짜 간 오브젝트 매니페스트를 간편하게 비교할 수 있습니다. 이를 통해 변경된 사항을 빠르게 확인하고 문제를 해결할 수 있습니다.

 

 

컨테이너 내  애플리케이션을 한번에 모니터링

해당 화면은 컨테이너 맵 화면입니다. 운영을 하다보면 컨테이너만 모니터링하는게 아니라

컨테이너 내부에 실행 중인 애플리케이션 상에서는 문제가 없는지  모니터링해야할 때가 있습니다.

컨테이너/POD 내의 애플리케이션은 하늘색 마이크로 블럭으로 표시합니다. 

와탭은 컨테이너 내부에서 실행 중인 애플리케이션까지 실시간으로 연계하여 확인할 수 있습니다. 

 

 

 

 

참고 자료 

https://docs.whatap.io/kubernetes/install-master-node-agent

https://docs.whatap.io/kubernetes/object-manifest