1. 컨테이너
- 컨테이너는 애플리케이션을 환경에 구애 받지 않고 실행하는 기술
- 운영체제에서 실행되는 프로세스를 격리(Isolation)하여 별도의 실행 환경을 제공해주며, 해당 프로세스는 운영체제 상에
- 서 실행되는 유일한 프로세스인 것처럼 작동하는 기술
- 애플리케이션 관련 라이브러리 및 종속 항목과 함께 패키지로 묶어 소프트웨어 서비스 구동을 위한 격리 환경을 마련
1) 컨테이너 장점
- 가벼움 : 사용자의 Request Traffic 이 증가함에 따라, 가상머신이나 컨테이너를 추가적으로 배포할 때 가상머신의 크기는 최소 GB 단위 이지만, 컨테이너의 경우 Guest OS가 없기에 MB 단위의 크기를 가짐
- 탄력성 : 컨테이너는 Linux, Windows, 가상머신, Data Center, Public Cloud 등 어느 환경에서나 구동이 되므로 개발 및 배포가 쉬움
경우 Guest OS가 없기에 MB 단위의 크기를 가짐
- 유지 관리 효율 : 운영 체제 커널이 하나밖에 없기 때문에 운영 체제 수준에서 업데이트 또는 패치 작업을 한 번만 수행하면 변경 사항이 모든 컨테이너에 적용
2) 컨테이너 아키텍처
- 리눅스 시스템에서 컨테이너를 이용하여 격리 구조를 만드는 기법은 격리를 담당하는 Linux Namespace와 리소스를 제어하는 Control Group(cgroup)을 사용하여 격리된 컨테이너 환경을 제공
- 리눅스 시스템에서 네임스페이스는 기본적으로 단일 네임스페이스를 사용하여 동작
동작 구성 -> 마운트 포인트, 프로세스, 네트워크 –IPC, UTS (Unix TimeSharing), 사용자
- 제어 그룹은 프로세스 또는 컨테이너가 사용할 수 있는 리소스의 양을 제한할 수 있으며,
제한할 수 있 는 리소스 -> CPU, 메모리, 네트워크 대역폭, 디스크 입출력
* 가상머신은 애플리케이션을 동작시키기 위해서 애플리케이션이 사용하는 리소스만 사용하는 것뿐만 아니라 운영체제가 동작하기 위한 리소스가 추가로 필요
* 컨테이너는 애플리케이션이 동작하기 위한 리소스만 사용하기 때문에 휠씬 더 빠르고 가볍게 동작시킬 수 있음
2. 쿠버네티스
- 컨테이너를 쉽고 빠르게 배포 및 확장하고, 관리를 자동화해주는 오픈 소스 플랫폼
- 명칭은 조타수(helmsman)나 조종사(pilot)를 뜻하는 그리스어에서 유래
- k8s라는 약자로 불리는데, 이는 k,s 사이의 8글자를 나타내는 약식 표기
- 단순한 컨테이너 플랫폼이 아닌 마이크로서비스, 클라우드 네이티브 플랫폼(CNCF) 을 지향하고 컨테이너로 이루어진 것들을 손쉽게 담고 관리할 수 있는 그릇 역할
1) 배포방식
- Deployment, StatefulSets, DaemonSet, Job, CronJob 등 다양한 배포 방식을 지원
- 여러대의 애플리케이션을 띄우고 싶을 경우에는 Deployment 이용
- 로그나 모니터링 등 모든 서버에 설치가 필요한 경우엔 DaemonSet을 이용
- 배치성 작업은 Job이나 CronJob을 이용
* 네임스페이스(Namespace) 기능으로 하나의 클러스터를 논리적으로 구분하여 사용 가능
* 라벨(label) 기능으로 유연하면서 확장성 있게 리소스를 관리
2) 주요 특징과 구성요소
- RBAC (role-based access control) 역할 기반 액세스 제어
- 누가(주체), 무엇을(동사), 어디에(네임스페이스) 실행할 수 있는지 결정하는 권한 또는 템플릿 집합을 수반하는 Identity 및 액세스 관리 형식
- 마스터 –노드 구조 :
-> 중앙(Master)에 API 서버와 상태 저장소를 두고 각 서버(Node) 의 에이전트(kubelet)과 통신하는 단순한 구조
-> 모든 명령은 마스터의 API 서버를 호출하고, 노드는 마스터와 통신하면서 필요한 작업 수행
-> Kubectl 이라는 Client 도구로 API 서버 접근 가능
- Kubernetes Object
-> Pod :
* 쿠버네티스에서 배포할 수 있는 가장 작은 단위
* 한 개 이상의 컨테이너와 스토리지, 네트워크 속성 가짐
* 컨테이너를 하나만 사용하는 경우도 반드시 Pod으로 감싸서 관리
-> Replicaset & Deployment
* Pod을 여러 개(한 개 이상) 복제하여 관리하는 오브젝트
* 복제할 개수, 개수를 체크할 라벨 선택자, 생성할 Pod의 설정 값(템플릿)등 설정
* 자동으로 롤링 업데이트 가능
-> Service
* 네트워크 관련 Object
* Pod <-> Pod 연결, 외부에서 접근할때 등 사용
'[스터디] 정보보안' 카테고리의 다른 글
[스터디] 4. 클라우드 (퍼블릭 클라우드 AWS) (0) | 2025.02.26 |
---|---|
[스터디] 3. 클라우드 (퍼블릭 클라우드) (0) | 2025.02.26 |
[스터디] 2. 클라우드 (0) | 2025.02.23 |
[스터디] 1. 클라우드 (0) | 2025.02.23 |
[스터디] MITRE ATT&CK (3) | 2024.12.23 |