Kubernetes (쿠버네티스) 본문
Kubernetes
Kubernetes (이하 쿠버네티스)는 컨테이너 관리자로 컨테이너 운영을 자동화하기 위한 도구다.
도커 스웜(Docker swarm) / 메소스(Mesos) 등과 같은 역할을 하는 도구라고 볼 수 있으며,
위와 같은 도구들은 일컬어 오케스트레이션 도구라고도 한다.
Kubernetes Cluster
쿠버네티스 클러스터는 Kubernetes의 여러 리소스를 관리하기 위한 집합체다.
그리고 클러스터는 노드 > 파드 > 컨테이너 등이 구성되어 이루어져있다.
Node ( Master node / worker node)
노드는 클러스터 안의 가장 큰 개념으로, 마스터 노드와 워커 노드로 구분된다.
MasterNode
마스터 노드는 클러스터 전체(워커 노드들)를 관리하는 서버이며 클러스터에 핵심적인 요소이며,
보통은 한 클러스터에 3개 이상의 마스터 노드가 존재한다. 마스터 노드의 역할로는
- API 서버 : 모든 명령 & 통신을 API를 통해 진행되며, 모든 기능은 Rest API로 처리한다.
- Etec : 클러스터의 DB 역할. 설정값이나 클러스터의 상태를 저장한다.
- 스케줄러 : 파드나 서비스들을 적절한 노드에 저장하거나 정리해주는 역할을 한다.
- 컨트롤러 매니저 : 필요에 따른 컨트롤러(ex 복제 등) 를 생성하고, 각 노드에 배포하여 관리한다.
WorkerNode ( Node)
워커 노드는 마스터 노드에게 받은 명령을 받고 실행하는 역할을 한다.
워커 노드의 역할로는
Kubelet(통신) : 마스터의 API 서버와 통신하면서 받은 명령들을 수행하고, 자신의 상태를 마스터 노드에 전달한다.
Kube-proxy(트래픽 정리) : 노드와 마스터 간의 네트워크 통신을 관리한다.
Container runtime : 파드를 통해 배포된 컨테이너를 실행하는 역할을 한다. (도커 컨테이너와 역할 비슷)
cAdvisor(모니터링) : 노드 내에서 가동되는 컨테이너들의 상태와 성능 등의 정볼르 수집하며 마스터에게 전달한다.
Pod
Pod, 이하 파드는 컨테이너가 모인 집합체의 단위로 적어도 하나 이상의 컨테이너로 이루어졌다.
쿠버네티스에서는 결합이 강한 컨테이너를 파드로 묶어 일괄 배포한다. (ex, nest web app + nginx)
이때, 한 파드 안의 컨테이너들은 모두 같은 노드에 배치된다.
쿠버네티스 명령어
// deployment name 조회
kubectl get deployments
// 실행 중인 pod 모두 조회
kubectl get pod
// 해당 Pod 에 대한 log 조회
kubectl logs [pod name]
kubectl logs [pod name] -f
kubectl logs [pod name] --tail=갯수
// Pod 에 접속
kubectl exec -it [pod name] /bin/bash
'개발 > 알쓸코잡' 카테고리의 다른 글
Gitflow (0) | 2023.03.04 |
---|---|
CI / CD (0) | 2023.03.04 |
서버리스 (0) | 2023.03.01 |
HTTP & HTTPS & SSL (0) | 2023.02.25 |
FireWall(DMZ) & VPC (0) | 2023.02.25 |