1. 개요

<Docker 가상 환경 구축 입문>의 마지막 챕터인 <Chapter 11. Kubernetes란>를 읽고 정리한 내용으로,

지금까지 Docker Swarm을 통한 오케스트레이션 기능을 살펴보았지만, 최근 컨테이너 오케스트레이션의 표준은 쿠버네티스라고 할 수 있습니다.

그렇다면 쿠버네티스란 어떤 툴이며, 어떻게 사용할 수 있는지 간단히 알아봅니다.


2. Kubernetes의 개요

  • Kubernetes는 구글이 개발한 오케스트레이션 툴로, 컨테이너 실행 관리 및 관리 자동화를 위한 기능을 갖추고 있음.
  • 쿠버네티스 애플리케이션의 기본 실행 단위는 Pod.
  • Kubernetes에 특화된 클라우드 서비스가 제공됨.
    • GCP - Google Kubernetes
    • AWS - Amazon Elastic Kubernetes Service
    • Azure - Azure Kubernetes
  • Kubernetes에 특화된 서비스에는 오토 스케일링 기능이나, 자동 복구 기능을 갖추고 있는 것도 있음.
  • Kubernetes의 클러스터는 Docker Swarm처럼 마스터와 워커로 나뉘며, 마스터가 클러스터 전체의 관리를 담당. 
  • 쿠버네티스 구성 컴포넌트
    • kubectl 명령어 : CLI 클라이언트. 이 명령어를 사용해 APIServer에 요청을 보낼 수 있음.
    • APIServer : 마스터 위에서 동작하며, 요청을 받아 ControllerManager에 전달하거나 etcd의 구성 정보를 저장하는 역할을 담당.
    • ControllerManager : 마스터 위에서 동작하며, 쿠버네티스의 상태 감시나 각 리소스의 컨트롤러를 관리하는 매니저 역할.
    • Scheduler : 마스터 위에서 동작하며, Pod를 노드에 분배하는 역할.
    • Kubelet : 노드 상에서 동작하며, 마스터와 통신하여 노드 상의 컨테이너를 제어하는 역할.

 

3. Kubernetes 사용법

  • Pod 작성
    $ kubectl run nginx --image=nginx
  • 존재하는 Pod 확인
    $ kubectl get pod
    NAME                     READY     STATUS    RESTARTS   AGE
    nginx-65899c769f-npr8x   1/1       Running   0          53s
  • Pod 내의 컨테이너에 접속하는 방법 (간이) - localhost로 접속
    $ sudo kubectl port-forward nginx-65899c769f-npr8x 80
    Password: ------
    Forwarding from 127.0.0.1:80 -> 80
    Forwarding from [::1]:80 -> 80
    Handling connection for 80
    Handling connection for 80
  • 쿠버네티스 오브젝트 삭제
    $ kubectl delete service nginx
    $ kubectl delete deployment nginx