컨테이너화된 애플리케이션의 배포, 확장 및 관리를 자동화하는 오픈 소스 플랫폼.
애플리케이션의 확장성과 가용성을 높이기 위해 쿠버네티스를 도입하는 것은 매우 유용할 수 있음. 특히, MSA를 도입했거나 클라우드 컴퓨팅 환경에서 최적화되어 설계되고 구축된 애플리케이션을 개발할 때 쿠버네티스는 필수적인 도구가 될 수 있음.
장점
이식성(다양한 클라우드와 온프레미스 환경 지원)
자동화(배포, 스케일링, 복구 자동화)
확장성(모듈식 설계와 다양한 플러그인 지원)
안정성(자동 복구와 롤아웃/롤백 기능)
컨테이너 오케스트레이션(Container Orchestration) : 여러 컨테이너를 배포, 관리, 확장, 네트워킹, 로드 밸런싱, 모니터링하는 작업을 자동화하는 프로세스. 쿠버네티스는 이러한 오케스트레이션을 통해 대규모 애플리케이션을 효율적으로 운영할 수 있도록 지원.
팟(Pod) : 쿠버네티스의 최소 배포 단위로, 하나 이상의 컨테이너를 포함. 동일한 네트워크 네임스페이스를 공유하며, 보통 함께 배포되고 스케일링되는 컨테이너들로 구성. 팟 내의 컨테이너들은 같은 로컬 네트워크에서 실행되어 쉽게 통신할 수 있음.
서비스(Service) : 특정 팟들의 집합을 하나의 네트워크 엔드포인트로 노출시켜, 팟들 간의 통신을 가능하게 함. 로드 밸런싱을 통해 여러 팟으로 트래픽을 분산시키고, 팟의 IP 주소가 변경되어도 일관된 접속점을 제공. pod에 연결해주는 네트워크
• 4가지 종류의 Service
• ClusterIP • Default Service로서 Pod 그룹의 단일 진입점(Virtual IP) 생성 • 수동으로 IP를 지정할 때는 10.96.0.0/12사용한다
• NodePort • ClusterIP가 동시에 만들어진다 • Cluster내의 아무 Worker Node의 IP에 대한 Port 번호로 접속하도록 한다 • 기본적으로 30,000 ~ 32,767까지 포트 번호가 동적으로 할당된다
• LoadBalancer • Layer 2 ~ Layer 4를 지원하는 부하조정 장비 • Public Cloud 업체 및 OpenStack에서 이용 가능 • OnPremises Cluster에서는 metallb 사용 가능
• ExternalName • Cluster 안에서 외부에 접속시 사용할 도메인을 등록해서 사용 • Cluster domain이 실제 외부 도메인으로 치환되어 동작
디플로이먼트(Deployment) : 애플리케이션의 선언적 업데이트를 관리하는 쿠버네티스 객체. 원하는 애플리케이션 상태를 정의하고 이를 유지하기 위해 새로운 팟을 생성하거나 삭제하며, 롤아웃 및 롤백을 통해 애플리케이션 배포를 안정적으로 관리.
네임스페이스(Namespace) : 클러스터 내의 리소스를 논리적으로 분리하여 관리할 수 있는 단위. 여러 사용자나 팀이 동일한 클러스터를 사용할 때 리소스의 이름 충돌을 방지하고, 멀티 테넌시를 지원.
볼륨(Volume) : 팟 내의 컨테이너들이 데이터를 영속적으로 저장하고 공유할 수 있도록 하는 스토리지. 다양한 스토리지 백엔드를 지원하며, 컨테이너가 재시작되어도 데이터를 유지할 수 있음.
컨피그맵(ConfigMap) : 애플리케이션 설정 데이터를 관리하는 객체로, 환경 변수를 통해 설정을 컨테이너에 주입
시크릿(Secret) : 암호, API 키 등 민감한 데이터를 관리하는 객체, 암호화되어 저장되고 컨테이너에 안전하게 주입.
오토스케일링(Auto-Scaling): 트래픽이나 부하에 따라 애플리케이션의 자원을 자동으로 조정하는 기능. 쿠버네티스는 수평 팟 오토스케일링(Horizontal Pod Autoscaler)을 통해 팟의 수를 조정하고, 클러스터 오토스케일링을 통해 노드 수를 자동으로 조정함.
도커와 비교
docker | Kubernetes | |
역할 | 컨테이너를 생성, 배포, 실행하는 도구 | 컨테이너화된 애플리케이션을 자동으로 배포,확장, 관리하는 플랫폼 |
주요 기능 | 애플리케이션과 그 종속성을 컨테이너화해서 일관된 실행 환경 제공 | 컨테이너 오케스트레이션, 자동확장, 자가 치유, 로드 밸런싱, 서비스 발견 |
사용 사례 | 단일 서버에서 컨테이너를 실행하고 관리할 때 | 대규모 복잡한 애플리케이션의 컨테이너 관리와 오케스트레이션 |
예시 | 개발 환경에서 애플리케이션을 테스트 or 단일 서버 배포 | MSA를 사용하는 대규모 애플리케이션의 클러스터 관리 |
요약 | 컨테이너화된 애플리케이션을 구축, 실행하는 도구로 주로 개발 환경에서 사용됨 | 도커 등의 컨테이너를 오케스트레이션하고 관리하는 플랫폼으로, 대규모 분산 시스템과 자동회된 운영이 필요한 환경에서 사용됨. |
'Chapter01 > 이모저모,, 고모 숙모;' 카테고리의 다른 글
요즘의 나 ,, (0) | 2024.08.22 |
---|---|
[cs지식] MSA (0) | 2024.07.22 |
[cs] @Scheduled(cron = "* * * * *") (0) | 2024.06.20 |
[cs지식] CORS란? (SOP, Simple Request,Preflight Request) (0) | 2024.06.12 |
[ cs지식 ] 프론트엔드 용어 (0) | 2024.05.31 |