Kubernetes 기본 개념과 기능 및 동작 구조
by 현생사는갓생지망생반응형
1. Container Orchestration
- Monolithic Application에서 Microservices로의 전환
- 애플리케이션 안에 모든 비즈니스 로직이 다 들어가 있는 구조 Monolithic
- Microservices란, 서비스를 비즈니스 경계에 맞게 세분화 하고, 서비스 간 통신은 네트워크 호출을 통해 진행하여 확장 가능하고 회복적이며 유연한 애플리케이션 구성하는 것
- 기존 Monolithic 방식은 새로운 기능 추가 및 업데이트 어려움. 특정 부분에 문제 발생 시 큰 장애로 이어질 가능성 있음. Scale-Out 시 필요 없는 자원이 함께 증가
- Kubernetes는 Microservices를 개발하고 실행하기에 최적의 환경
2. Kubernetes 기능
3. Kubernetes Components
👉🏻 Control Plane Components
- API Server : Control Plane의 Front-end. Kubernetes REST API를 공개. 모든 데이터 etcd 클러스터에 저장
- etcd : 분산데이터 저장소. 전체 클러스터의 상태 저장
- controller manager : API를 사용해 클러스터의 상태 감시 및 조정
- scheduler : 리소스 요구사항, 서비스 요구사항, HW/SW 제약 사항 등 고려하여 node에 pod를 스케줄링
- core DNS : 모든 서비스/Pod는 DNS 이름을 가지며 자동검색 (automatic discovery)에 유용
👉🏻 Worker Node Components
- kube-proxy : node의 네트워크 규칙을 유지 관리
- kubelet : 각 node에서 실행되는 agent. master components와 통신을 수행하며 pod를 관리 및 감독
4. Kubernetes 동작 구조
- Kubernetes Cluster의 Components는 Cluster를 제어하는 목적을 가진 여러 Master Compnents와 Cluster Node에서 실행되는 Node Components로 구성되어 있다
5. Managing Pods
6. Kubernetes Controller
- Deployment : 상태가 없는 Application을 배포할 때 사용하는 가장 기본적인 Controller
- StatefulSet : 상태가 있는 Pod를 관리하는 Controller (컨테이너가 종료되더라도 필요로 하는 데이터가 남게되어 Pod 재시작하면 데이터 보존)
7. Pod Network
- CNI (Container Network Interface)에서 관리하는 Pod간 통신에 사용되는 Cluster 전체 Network
✔︎ Ex. Weave Net은 Weaveworks사에서 만든 멀티 호스트 오버레이 네트워킹 솔루션으로 Weave Bridge를 만들어 vRouter를 통해 컨테이너들끼리 통신한다.
8. Service Network
- Service discovery를 위해 kube-proxy가 관리하는 Cluster-wide 범위의 Virtual IP. 동일한 서비스를 제공하는 Pod 그룹에 단일 진입점을 제공
- ClusterIP : selector를 지정하여 pod group 구성
- NodePort : 모든 Node를 대상으로 외부 접속 가능한 Port를 예약
- LoadBalancer : Public Cloud 지원. LB 자동으로 만들어줌. NodePort/ClusterIP 포함
9. Kubernetes Ingress
- HTTP나 HTTPS를 통해 클러스터 내부의 서비스를 외부로 노출시키는 API
- Kubernetes에서 Ingress를 사용하기 위해서는 2가지가 필요
- Ingress 규칙이 적용될 Ingress Controller
- YAML 파일에서 Ingress로 정의되는 Ingress 리소스
10. Volume Management
👉🏻 Volume Type
- EmptyDir : Pod와 함께 생성되고, 삭제되는 임시 Volume. Pod 단위로 관리가 되기 때문에 컨테이너가 삭제 혹은 재 시작 되어도 사용 가능
- HostPath : 로컬 디스크의 경로를 Pod에 Mount해서 사용하는 Volume 방식
11. Kubernetes Deployment
반응형
'DevOps' 카테고리의 다른 글
Git Status와 Git Add, Commit, Push 기본 개념 및 사용법 (3) | 2023.12.21 |
---|---|
다른 사람의 GitLab Repository에서 Branch 복사해오기 (0) | 2023.12.15 |
Conflict (충돌) 없이 Git Merge 하기 (0) | 2023.12.15 |
MAC에 Git 설치 및 GitLab Remote 저장소 연동 (0) | 2023.12.15 |
MAC에 Podman Desktop 설치 (1) | 2023.12.15 |
블로그의 정보
현생이네
현생사는갓생지망생