검색
검색
공개 노트 검색
회원가입로그인

쿠버네티스 사용 방법

쿠버네티스 사용 방법

쿠버네티스(Kubernetes)는 컨테이너화된 애플리케이션을 자동으로 배포, 관리, 확장하는 오픈소스 플랫폼으로, 구글에서 처음 개발되었으며 현재는 CNCF(Cloud Native Computing Foundation)에서 관리하고 있습니다. 이 글에서는 쿠버네티스를 사용하는 방법과 주요 기능, 설치 방법, 배포, 확장, 그리고 문제 해결 방법 등을 다룰 것입니다.

쿠버네티스 기본 개념 이해

쿠버네티스는 여러 컴퓨터에 걸쳐 컨테이너화된 애플리케이션을 관리하고 유지하는 데 사용됩니다. 주요 구성 요소는 다음과 같습니다:

  • 노드(Node): 노드는 쿠버네티스 클러스터를 구성하는 개별 컴퓨터입니다. 마스터 노드와 워커 노드로 나뉩니다.

  • 팟(Pod): 팟은 쿠버네티스에서 배포 가능한 가장 작은 단위로, 하나 이상의 컨테이너를 포함할 수 있습니다.

  • 컨트롤 플레인(Control Plane): 쿠버네티스 클러스터 전체를 관리하며 API 서버, 컨트롤러 매니저, 스케줄러 등으로 구성됩니다.

  • 서비스(Service): 서비스는 클러스터 내에서 실행 중인 팟들을 외부에서 접속할 수 있게 해줍니다.

쿠버네티스 설치하기

쿠버네티스 설치는 여러 방법이 있지만, 로컬 환경에서는 Minikube나 Kind를 사용하는 것이 일반적입니다. 클라우드 환경에서는 GKE, EKS, AKS 등의 관리형 서비스를 사용할 수 있습니다. 아래는 간단한 Minikube를 사용한 쿠버네티스 클러스터 설치 방법입니다:

사전 준비

쿠버네티스를 설치하기 전에 Docker와 kubectl을 설치해야 합니다.

  1. Docker 설치

    sudo apt-get update
    sudo apt-get install docker.io
    sudo systemctl enable docker
    sudo systemctl start docker
  2. kubectl 설치

    curl -LO "https://storage.googleapis.com/kubernetes-release/release/$(curl -s https://storage.googleapis.com/kubernetes-release/release/stable.txt)/bin/linux/amd64/kubectl"
    chmod +x ./kubectl
    sudo mv ./kubectl /usr/local/bin/kubectl

Minikube 설치 및 클러스터 생성

  1. Minikube 설치

    curl -Lo minikube https://storage.googleapis.com/minikube/releases/latest/minikube-linux-amd64
    chmod +x minikube
    sudo mv minikube /usr/local/bin/
  2. 클러스터 시작

    minikube start
  3. 설치 확인

    kubectl get nodes

애플리케이션 배포하기

쿠버네티스를 통해 애플리케이션을 배포하는 방법은 다음과 같습니다:

예제 애플리케이션 배포

  1. 배포 파일 작성(deployment.yaml)

    apiVersion: apps/v1
    kind: Deployment
    metadata:
      name: my-app
    spec:
      replicas: 3
      selector:
        matchLabels:
          app: my-app
      template:
        metadata:
          labels:
            app: my-app
        spec:
          containers:
          - name: my-app
            image: my-app-image
            ports:
            - containerPort: 80
  2. 서비스 파일 작성(service.yaml)

    apiVersion: v1
    kind: Service
    metadata:
      name: my-app-service
    spec:
      selector:
        app: my-app
      ports:
      - protocol: TCP
        port: 80
        targetPort: 80
      type: NodePort
  3. 배포 적용

    kubectl apply -f deployment.yaml
    kubectl apply -f service.yaml
  4. 배포 상태 확인

    kubectl get deployments
    kubectl get pods
    kubectl get services

애플리케이션 확장

쿠버네티스는 수평 확장(horizontal scaling)을 통해 애플리케이션을 자동으로 확장할 수 있습니다. 아래는 간단한 확장 예제입니다:

  1. 애플리케이션 복제본 수 증가

    kubectl scale deployment my-app --replicas=5
  2. 확장 상태 확인

    kubectl get deployments
    kubectl get pods

모니터링 및 로깅

쿠버네티스의 모니터링과 로깅은 애플리케이션의 성능을 유지하고 문제를 해결하는 데 필수적입니다. 일반적으로 Prometheus와 Grafana를 많이 사용합니다.

  1. Prometheus 설치:

    kubectl apply -f https://github.com/prometheus-operator/prometheus-operator/blob/main/bundle.yaml
  2. Grafana 설치 및 설정:

    kubectl apply -f https://github.com/grafana/helm-charts/blob/main/charts/grafana/values.yaml

문제 해결

쿠버네티스를 사용하다 보면 다양한 문제를 만날 수 있습니다. 몇 가지 일반적인 문제와 해결 방법은 다음과 같습니다:

  1. 팟이 실행되지 않음:

    kubectl describe pod <pod-name>
  2. 네트워크 문제:

    kubectl get services
    kubectl describe service <service-name>
  3. Persistent Volume 문제:

    kubectl get pv
    kubectl describe pv <pv-name>

결론

이번 글에서는 쿠버네티스의 기본 개념부터 설치, 애플리케이션 배포, 확장, 모니터링, 로깅, 그리고 문제 해결 방법까지 다뤄보았습니다. 쿠버네티스의 다양한 기능과 활용 방법을 익히면 컨테이너화된 애플리케이션을 효과적으로 관리하고 운영할 수 있습니다. 계속해서 관련 문서와 커뮤니티를 통해 학습을 이어가며 경험을 쌓아가시기 바랍니다.

공유하기
카카오로 공유하기
페이스북 공유하기
트위터로 공유하기
url 복사하기
조회수 : 33
heart
T
페이지 기반 대답
AI Chat