1. Kubernetes
컨테이너화된 애플리케이션을 자동으로 배포, 스케일링 및 관리해주는 오픈 소스 시스템
쿠버네티스가 제공하는 기능
- 서비스 디스커버리와 로드 밸런싱 : 컨테이너에 대한 트래픽이 증가할 떄, 배포가 안정적으로 이워질 수 있도록 네트워크 트래픽을 로드 밸런싱
- 스토리지 오케스트레이션 : 원하는 스토리지 시스템을 자동으로 마운트할 수 있는 기능 제공
- 자동화된 롤아웃과 롤백 : 현재 상태를 원하는 상태로 설정한 속도에 따라 변경
- 자동화된 빈 배킹 : 각 컨테이너 필요한 CPU 및 메모리 양 설정
- 자동화된 복구 : 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며 상태 검사에 응답하지 않는 컨테이너를 종료시킴
- 시크릿과 구성 관리 : OAuth 토큰 및 SSH 키와 같은 중요한 정보 저장 및 관리
2. Kubernetes 클러스터
1) Kubernetes 클러스터 구성요소 - Control Plane
API Server
- Kubernetes API를 노출하는 K8S Control Plane의 컴포넌트
- 사용자 요청의 유효성을 검증하고 요청을 처리
- JSON 포맷의 요청을 받아서 API 오브젝트를 관리
- etcd 클러스터에서 데이터를 검색하고 응답으로 제공
Controller Manager
- Pod를 복제하거나 노드 운영 등 각 리소스를 제어하는 컨트롤러들을 감독하고 실행
- 핵심 제어 루프를 포함하는 데몬
- 서비스 운영에 필요한 다양한 컨트롤러를 통합
- Deployment Controller, ReplicaSet Controller, Node Controller 등등
Scheduler
- Node가 할당되지 않은 새로운 Pod를 감시
- 새로운 Pod가 실행될 최적의 Node를 선택
- 파드가 실행 가능한 노드를 찾은 다음 점수를 측정한 후 가장 높은 점수를 가진 노드를 선택
- 리소스 요구사항, 하드웨어/소프트웨어/정책 제한조건, 어피니티 및 안티-어피니티 명세, 데이터 지역성 등을 고려
etcd
- 모든 클러스터의 데이터를 담는 저장소로 사용되는 키-값 저장소
- 쿠버네티스의 필수 구성 요소
- etcd는 분산형 합의 기반 시스템
- 저장된 데이터의 백업 필수
2) Kubernetes 클러스터 구성요소 - Data Plane
kubelet
- Worker Node에서 실행되는 에이전트
- Pod에서 컨테이너가 확실하게 동작하도록 관리
- 컨트롤 플레인의 요청을 받아서 실행
- Node의 상태를 전달
kube-proxy
- Worker Node에서 실행되는 네트워크 프록시
- Node의 네트워크 규칙을 유지 관리
- 서비스와 Endpoint에 대한 연결을 구성
- OS에서 제공하는 패킷 필터링 기능을 사용
- DaemonSet 형태로 배포
Pod
- Kubernetes의 가장 작은 Object 단위
- 하나 이상의 컨테이너를 포함
- 고유의 사설 IP를 할당 받아서 사용
- Pod 내의 컨테이너는 Pod의 IP를 공유해서 사용
- 필수 컨테이너는 Side Car 형태로 각 Pod에 동시 배포 가능
※ Side Car :
. 기존 파드의 기능을 향상하기 위해 파드의 파일시스템을 공유하는 형태의 보조 컨테이너를 사이드카 컨테이너
. 사이드카 패턴은 원래 사용하려고 했던 기본 컨테이너의 기능을 확장하거나 보조하는 용도의 컨테이너를 추가하는 패턴
'Kubernetes' 카테고리의 다른 글
[Kubernetes] Kubernetes Storage (0) | 2024.04.14 |
---|---|
[Kubernetes] Kubernetes Object (0) | 2024.04.14 |
[Kubernetes] node에서 실행중인 pod 조회 (0) | 2024.04.08 |
[Kubernetes] Istio vs Ningx Ingerss 비교 (0) | 2024.04.06 |
[Kubernetes] 쿠버네티스 환경에서 보안 강화를 위한 중요 지침 (0) | 2024.02.24 |