가볍게 읽는 도커 안내서에 이어서 쿠버네티스 개요에 대해서도 간단하게 알아보자
쿠버네티스 개요
쿠버네티스가 하는 일
- 컨테이너를 관리
- 컨테이너가 하나만 있다면 충분히 관리할 수 있겠지만 만약 100개가 있다면?
쿠버네티스의 역사
- 리눅스와 같은 성공한 오픈 소스 프로젝트 중에 하나
쿠버네티스 배포 종류
- 관리형 쿠버네티스: EKS,GKE와 같은 클라우드를 이용한 쿠버네티스로 관리나 운영이 필요없다.
- 설치형 쿠버네티스: Rancher, Red Hat Openshift와 같은 프로그램을 이용해서 필요한 여러 패키지들을 통합해 만든 설치형 버전.
- 구성형 쿠버네티스(네이티브 쿠버네티스): 요구사항에 맞게 자유로운 커스텀이 가능하다. kuberadm, kubespray, krib, kops…
쿠버네티스 기초
파드(Pod)
- 마스터 노드에서 워커노드에 애플리케이션을 배포하도록 명령을 한다
- 이때 애플리케이션을 배포하는 단위는 파드(Pod)이다.
- 파드는 하나의 일을 수행하기 위한 컨테이너 집합
- 하지만 대부분은 하나의 파드는 하나의 컨테이너로 이루어져 있다.
서비스(Service)
- 배포한 파드는 외부에서 접속할 수가 없다.
- 쿠버네티스 클러스터 밖으로 나갈려면 문을 나가야 한다.
- 문을 나가는 방법
- 문을 없애버린다.
- 안전한 구역을 만들어 나간다.
- 이 문을 나가는 가장 좋은 방법은 쿠버네티스 클러스터와 안전하게 연결하기 위한 어떠한 공간을 이용하는 것이다.
- 이 영역을 서비스 영역이라고 한다.
- 서비스가 각 노드의 노드포트(NodePort)를 통해 들어오고 각 노드포트들이 통신을 하면서 파드들이 위치한 곳을 찾아가는 구조
- 서비스는 쿠버네티스 클러스터를 외부에 노출하기 위한 방법
- 현관문을 통과하여 실제 방에 들어가기 위해서 항상 거쳐야 하는 공간은 거실이다.
- 서비스는 이러한 거실과 같이 파드에 접속하기 위해 항상 거쳐야 하는 곳이다.
디플로이먼트(Deployment)
- 파드는 한 개밖에 없는데 만약 그 파드가 죽어버린다면?
- 파드를 여러 개 사용하면 된다
- 디플로이먼트는 파드를 여러 개 모아 놓은 단위 객체
- 기존의 kubectl run은 파드 하나만 배포할 수 있기 때문에 kubectl create를 이용하여 배포한다.
- kubectl apply -f 를 통해 파일로 배포할 수도 있다.
- 또한 Replicas를 이용하여 실제로 배포되는 파드의 수를 조정한다.
로드밸런서(LoadBalancer)
- 노드포트로 외부에 노출을 하게 되면 IP주소를 직접 입력해야 하기 때문에 부담이 될 수 있다.
- 로드밸런서를 사용하면 좋은 점
- 가상 IP를 사용함으로써 노드의 IP를 알려주어야 하는 부담이 없다.
- 접속해야 하는 노드의 경로를 최적화하여 보내줄 수 있다.
쿠버네티스 구조
네임스페이스
- 쿠버네티스는 다양한 구성으로 이루어져 있다.
- api, etcd, c-m...
- 네임스페이스라는 구역으로 나누어져 서로 나름의 독립된 환경을 가지고 있었기 때문이다.
- 쿠버네티스를 주요하게 관리하는 요소들은 kube-systems 밑에 위치한다.
쿠버네티스의 기본 철학
- 쿠버네티스는 MSA를 기반으로 각 컴포넌트가 각자의 일을 열심히 하는 것을 기본으로 한다.
- API 서버는 감시만 하고, 실제 파드를 생성하는 것은 kubelet이 담당한다.
- API 서버는 굳건한 기둥과 같이 상태값만 가지고 있고, 컨트롤러 매니저, 스케줄러, kubelet 등이 상태값에 맞추는 방식으로 동작한다.
- 이렇게 API 서버가 추구하는 상태를 만들면 현재 상태를 여기에 맞추려고 하는 선언적인 시스템으로 동작한다.
- 감시 → 차이발견 → 상태변경이 계속해서 반복
- 가장 중요한 2가지
- 각자 할 일을 하는 MSA 방식
- 이러한 선언적인 상태를 계속해서 맞춰가려고 한다.
반응형
'데이터 엔지니어링 > Kubernetes' 카테고리의 다른 글
[번역] Kube-Proxy: 무엇이고 어떻게 동작하는가 (2) | 2024.01.27 |
---|---|
kubeadm으로 쿠버네티스 클러스터 구축하기 (feat. 오라클 클라우드, ARM64) (2) | 2024.01.05 |
Nginx Ingress Annotation rewrite-target 알아보기 (0) | 2023.06.04 |