본문 바로가기

Development

컨테이너 오케스트레이션: Kubernetes

오늘은 컨테이너 기반 애플리케이션의 배포, 스케일링 및 관리를 단순화하는 컨테이너 오케스트레이션 툴인 Kubernetes에 대해 알아봅니다.

1. Kubernetes란?

Kubernetes (이하 K8s)는 컨테이너화된 애플리케이션의 배포, 스케일링, 그리고 관리를 자동화해주는 오픈소스 플랫폼입니다. Google에서 개발되어 현재는 Cloud Native Computing Foundation에서 관리하고 있습니다.

1.1 Kubernetes의 주요 구성요소

  • Pod: K8s의 기본 실행 단위로, 하나 이상의 컨테이너 그룹을 의미합니다. Pod 내 컨테이너들은 동일한 네트워크와 스토리지 공간을 공유합니다.
  • Service: 네트워크 트래픽을 특정 Pod에 분배하는 역할을 합니다.
  • Volume: 데이터를 저장하는데 사용됩니다. Pod가 종료되어도 볼륨에 저장된 데이터는 사라지지 않습니다.
  • Namespace: K8s 클러스터 내의 가상적인 분리 공간으로, 팀별, 프로젝트별 리소스 분리 등에 사용됩니다.

2. Kubernetes의 장점

  • 다중 클라우드와 온프레미스 배포 지원: K8s는 클라우드 제공업체와 관계 없이 일관된 환경에서 실행됩니다.
  • 자동 스케일링: 사용량에 따라 자동으로 리소스를 스케일링할 수 있습니다.
  • 자동 복구: K8s는 실패한 컨테이너를 자동으로 재시작하고, 노드를 교체하며, 애플리케이션을 재분배합니다.

3. Kubernetes 설치 및 기본 사용법

Kubernetes는 다양한 플랫폼에서 설치할 수 있으며, 가장 간단한 방법 중 하나는 Minikube를 사용하는 것입니다. Minikube는 로컬 개발 및 테스트를 위한 단일 노드 K8s 클러스터를 제공합니다.

3.1 기본 사용법

  1. Pod 생성: K8s에서는 yaml 또는 json 형식의 manifest 파일을 작성하여 리소스를 생성합니다. 'kubectl apply -f [manifest 파일]' 명령어를 사용해 Pod를 생성할 수 있습니다.
  2. Service 생성:'kubectl apply -f [manifest 파일]' 명령어를 사용하여 Service를 생성할 수 있습니다. Service는 라벨 셀렉터를 통해 트래픽을 전달할 Pod를 선택합니다.
  3. Pod 및 Service 확인: 'kubectl get pods' 또는 'kubectl get svc' 명령어를 통해 생성된 Pod와 Service를 확인할 수 있습니다.
  4. Pod 로그 확인: 'kubectl logs [Pod 이름]' 명령어를 사용하여 Pod 로그를 확인할 수 있습니다.
  5. Pod 내부로 접속: 'kubectl exec -it [Pod 이름] -- /bin/bash' 명령어를 사용하여 Pod 내부로 접속할 수 있습니다.

Kubernetes는 컨테이너화된 애플리케이션의 관리를 간편하게 해주는 강력한 도구입니다. 하지만, Kubernetes를 효과적으로 사용하기 위해서는 클러스터 관리, 네트워킹, 보안 등에 대한 이해가 필요합니다. 따라서, 앞으로의 포스팅에서는 이러한 주제들에 대해 더 자세히 다룰 예정입니다.