728x90
1. Kubernetes (k8s)
1.1. 쿠버네티스란?
❓ 컨테이너를 쉽고 빠르게 배포 및 확장하고, 관리를 자동화해주는 오픈소스 플랫폼
- 컨테이너 오케스트레이션 툴
- 오케스트레이션 : 배포, 관리, 확장, 네트워킹을 자동화
- 컨테이너 수가 많아지면 관리 / 운영이 어려움 → 다수의 컨테이너를 관리 / 조율하는 시스템 필요
- 컨테이너의 생성, 소멸, 시작 및 중단 시점 제어, 스케줄링, 로드 밸런싱, 클러스터링 등 모든 과정 관리
- 특징
- 컨테이너화된 애플리케이션 배포
- 컨테이너로 패키징된 애플리케이션을 여러 대의 컴퓨터 / 클라우드 인프라에 쉽게 배포 가능
- 자동 스케일링 (Auto Scaling)
- 애플리케이션 부하에 따라 자동으로 서버를 늘리거나 줄이기 가능
- 트래픽 증가에 대처 용이
- 고가용성 (High Availability)
- 애플리케이션을 여러 서버에 복제하여, 하나의 서버에 장애 발생해도 시스템 계속 동작 가능
- 자동 복구 (Self-Healing)
- 애플리케이션의 문제나 장애가 발생하면, 자동으로 복구하거나 롤백 가능
- 시스템 신뢰성을 높인다
- 선언적 구성 (Declarative Model)
- YAML, JSON 파일을 사용하여 애플리케이션이 원하는 상태를 정의하고 그 상태를 유지 가능
- 컨테이너화된 애플리케이션 배포
1.2. 쿠버네티스의 구성 요소
- Cluster (클러스터)
- 제어판(Control Plane) 및 하나 이상의 컴퓨팅 머신 또는 노드로 구성
- 최소 하나 이상의 컨트롤 플레인
- 몇 개의 워커노드
- 쿠버네티스 내 가장 큰 단위로, 가상 서버들이 속한 클라우드
- 제어판(Control Plane) 및 하나 이상의 컴퓨팅 머신 또는 노드로 구성
- Control Plane (제어판) : 쿠버네티스 노드를 제어하는 프로세스들이 모여있는 곳
- 마스터노드가 관장한다
- 모든 태스크 할당 시작되고 클러스터가 잘 작동하도록 돕는다
- Node (워커노드) : 큐베렛이라는 프로세스가 돌아간다
- 한 개 이상의 컨테이너가 자리 잡고 있으며, 실제로 애플리케이션이 실행되고 있는 곳
- 큐베렛 (kubelet) : 각 노드에서 실행되는 기본 노드 에이전트
- 마스터노드(의 컨트롤 플레인)과 노드 간 통신 책임지는 프로세스
- 하나의 머신에서 동작하는 파드와 컨테이너 관리
- 파드 (Pod) : 쿠버네티스에서 생성 및 관리할 수 있는 배포 가능한 가장 작은 컴퓨팅 단위
- 하나 이상의 컨테이너 그룹
- 여러 컨테이너가 모여 하나의 완전한 애플리케이션을 구성하는 경우, 여러 개의 컨테이너가 모여 하나의 Pod가 된다
- 하나의 컨테이너로도 하나의 Pod 구성 가능
- 하나 이상의 컨테이너 그룹
1.3. 도커 - 쿠버네티스 - 오픈시프트 관계
- 도커는 컨테이너 기반의 오픈소스 가상화 플랫폼
- 컨테이너를 띄우고 실행하는 기술적인 개념 / 도구
- 쿠버네티스는 도커를 관리하는 오케스트레이션 툴
- 도커를 관리하는 툴
- 하나의 컨테이너만 사용한다면 쿠버네티스 필요 X
- 오픈시프트는 컨테이너 기반의 쿠버네티스 기업용 배포판
💬 도커 컨테이너들이 있고
이 컨테이너들을 관리하기 위한 기술인 쿠버네티스의 배포판인 오픈 시프트로 컨테이너 관리
2. OpenShift
2.1. 오픈시프트란?
- 컨테이너 기반 소프트웨어의 배포 및 관리를 위한 플랫폼
- RedHat에서 개발한 PaaS 솔루션
- 도커 컨테이너와 데브옵스 도구를 사용하여 쿠버네티스를 지원하는 운영환경을 제공
- 기능
- 개발자를 위한 소스 관리, 빌드, 배포를 위한 기능 제공
- Git과 Jenkins를 통한 CI/CD 구성 지원
- UI, CLI, API 등 다양한 인터페이스 제공
- 클러스터, 컨테이너 조절이 비교적 쉬움
- 운영을 위한 조직 관리 기능
- Auto-Scaling
- 서비스 수행 Pod에 부하가 발생해 CPU 사용률이 증가하면 자동으로 Pod 추가 생성하여 확장
- 개발자를 위한 소스 관리, 빌드, 배포를 위한 기능 제공
2.2. 오픈시프트의 구조
- 오픈시프트에 구축되는 시스템 환경은 여러 Node로 구성
- 각 Node에는 Pod을 배치
- 파드 (Pod)
- 쿠버네티스가 컨테이너들을 관리하기 위한 논리 단위
- 오픈시프트에서 관리하는 가장 작은 단위
- 하나의 Pod에 N개의 컨테이너 배포 가능
- Master에 의해 설치, 부하 모니터링, 오류 감지, 모니터 등을 자동 관리
- Master : 쿠버네티스 구현을 확장한 OpenShift Enterprise 관리 서버
- 버전 관리 시스템의 커밋 이벤트를 통해 애플리케이션을 자동으로 Docker 이미지에 빌드 및 배포 가능
- 라우팅 레이어를 통해 애플리케이션에 접속 가능
📌 References
https://blog.goorm.io/kdt_kubernetes/
https://www.codestates.com/blog/content/%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4
https://eng-sohee.tistory.com/129
https://nice-engineer.tistory.com/entry/Red-Hat-Openshift-%EB%9E%80
https://jhleed.tistory.com/161
728x90
'DevOps' 카테고리의 다른 글
[DevOps] 컨테이너(Container)와 도커(Docker) (0) | 2025.06.04 |
---|---|
[DevOps] Jenkins란? (1) | 2025.06.04 |
[DevOps] CI/CD란? (0) | 2025.06.04 |