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