• 쿠버네티스란?
컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈소스 시스템이다.
서버가 여러대 있는 환경에서 각각의 서버의 도커에게 대신 지시해주는 오케스트레이션 도구라고 생각하면 쉽다!
• 클러스터 구성요소
Cluster
컨테이너화된 애플리케이션을 실행하기 위한 일련의 노드 머신의 집합
Master
클러스터 전체를 컨트롤하며 내부에 있는 모든 노드를 관리하는 가상 머신
Worker
마스터에 의해 명령을 받고 실제 컨테이너들이 생성되고 일을 하는 가상 머신
• 쿠버네티스 클러스터 구성
cloud-controll-manager
컨트롤러들을 클라우드 서비스와 연결하여 관리한다.
kubelet
모든 노드에서 실행되며 컨테이너 실행 및 지속적인 헬스체크를 통해 마스터의 kube-api-server와 통신을 하는 에이전트이다.
kube-api-server
쿠버네티스의 모든 통신은 kube-api-server를 통해 통신한다.
kube-controller-manager
파트들을 관리하는 각각의 컨트롤러를 제어하는 역할을 한다.
kube-scheduler
리소스를 자원 할당이 가능한 노드에 할당하는 역할을 한다.
etcd
클러스터 내의 모든 세부적인 데이터를 저장하는 키-값 저장소이다.
kube-proxy
클러스터 내부의 가상 네트워크를 설정하여 관리한다.
• CRI (Container Runtime Interface)
컨테이너 런타임 인터페이스는 쿠버네티스에서 다양한 컨테이너 런타임을 사용할 수 있게 해주는 API이다.
• Namespace
네임스페이스는 클러스터를 논리적으로 분리하여 사용하는 것을 의미한다.
각 사용자는 권한이 부여된 네임스페이스만 접근할 수 있다.
• Resource
• 파드(Pod)
쿠버네티스에서 생성하거나 배포하는 가장 작고 간단한 단위이다.
하나 이상의 컨테이너, 스토리지 리소스, 고유한 네트워크 IP 주소 및 컨테이너 실행 방식을 관리하는 옵션을 캡슐화한다.
캡슐화란?
서로 연관있는 속성과 기능들을 하나의 캡슐로 만들어 데이터를 외부로부터 보호하는 것을 말한다.
1. 애플리케이션 배포 및 관리 관련 리소스
• 디플로이먼트(Deployment)
파드를 캡슐화하는 애플리케이션이다.
하나 이상의 파드를 포함할 수 있으며, 시스템은 요청에 따라 파드에 배포하는 것이다.
디플로이먼트에 의해 생성된 파드는 고유한 식별자를 유지하지 않고, 파드가 재생성될 때 새로운 식별자를 생성한다.
• 스테이트풀셋(Statefulset)
stateful(상태유지) 애플리케이션을 관리하는 데 사용된다.
안정적이고 예측 가능한 식별자(ex. pod-0, pod-1)를 가지고 식별자는 재배포되어도 변하지 않는다.
• Job
일회성 작업을 관리하기 위해 사용되는 리소스이다.
일반적으로 job은 한 번 실행되고 특정 작업을 완료한 후 종료되는 파드를 생성하고 관리한다.
데이터 처리, 배치 계산, 백업 작업 등 일시적이거나 일회성 처리가 필요한 작업을 실행하는 데 적합하다.
• Cron Job
주기적이고 반복적인 작업을 자동으로 실행하기 위한 리소스이다.
매일 자정, 매일 월요일 오전, 매월 첫째 날 등 작업 실행 간격을 설정할 수 있다.
• DaemonSet
클러스터 내의 모든 노드(또는 일부 특정 노드)에 파드를 자동으로 배포하는데 사용되는 리소스이다.
각 노드에 정확히 하나의 파드 복사본이 실행되도록 보장하는 것이 주 목적이다.
2. 네트워킹 관련 리소스
• Service
파드 그룹에 대한 안정적인 접근 주소를 제공한다.
서비스를 사용하면 특정 파드 그룹을 지속적으로 접근할 수 있는 고정된 방법을 마련할 수 있다.
• Ingress
클러스터 외부에서 클러스터 내부로 들어오는 HTTP/HTTPS 트래픽을 관리한다.
도메인 이름을 통해 특정 웹 애플리케이션의 서비스로 트래픽을 라우팅한다.
3. 설정 및 보안 관련 리소스
• Configmap
애플리케이션 코드와 설정 데이터를 분리할 수 있어, 애플리케이션 설정을 유연하게 관리하고 환경 간 이동을 쉽게 할 수 있다.
• Secret
민감한 정보를 안전하게 저장하고, 파드에서 사용할 수 있도록 제공하는 API 오브젝트이다.
Secret를 사용하면 비밀번호, OAuth 토큰, ssh 키와 같은 민감한 데이터를 소스 코드나 애플리케이션 설정에서 분리하여 안전하게 관리할 수 있다.
4. 스토리지 관련 리소스
• PVC, PV(Persistent Volume Claim)
데이터의 지속적인 저장과 관리를 위한 리소스이다.
파드(Pod)의 일시적인 생명 주기와는 독립적으로 데이터를 지속적으로 저장할 수 있는 방법을 제공한다.
PVC는 필요한 스토리지를 요청하고, PV는 그 요구를 충족하는 실제 리소스를 제공한다.
소비자(Consumer) - 제공자(Provider) 관계와 유사하다.
'기타 전공 > 클라우드실습' 카테고리의 다른 글
[클라우드실습] #3 클라우드 네이티브 애플리케이션 (0) | 2024.06.20 |
---|---|
[클라우드실습] #2 클라우드 모델 (0) | 2024.04.26 |
[클라우드실습] #1 클라우드 (0) | 2024.04.26 |