Kubernetes란
- 컨테이너 기반 서비스 배포/스케일/관리 자동화를 해주는 오픈소스 프레임웍
- 구글에서 사용하던 Borg 서비스를 오픈소스화함 (2015년)
- 클라우드나 on-prem 모두에서 잘 동잘됨
- 다양한 Container에서 사용 가능하지만 주로 Docker Container들이 대상이 됨
- 물리서버나 가상서버 위에서 모두 동작
- 지금은 Cloud Native Computing Foundation이라는 비영리 단체에서 운영
- 클라우드 환경에서 어떻게 소프트웨어를 배포하는 것이 효율적일까?
- 컨테이너, 서비스메시, 마이크로서비스, API, DevOps, On-demand Infra가 주요 핵심 기술
- 가장 많이 사용되는 컨테이너 관리시스템 = K8s
- 사용회사와 커뮤니티 활동이 굉장히 많고 활발
- 카카오, 네이버, 라인, 쿠팡 등의 국내 업체도 활발히 사용
- K8s위에 기능을 추가한 Container Orchestration툴들이 생겨남
- 모든 글로벌 클라우드 업체들이 지원 : EKS(AWS), AKS(Azure), GKE(GCP)
- 확장성이 좋아서 다양한 환경에서 사용됨
- 머신러닝: Kubeflow
- CI/CD: Tekton
- Service Mesh: Istio
- Serverless: Kubeless
- 다수의 서버에 컨테이너 기반 프로그램을 실행하고 관리
- 컨테이너 기반 프로그램 == Docker Container
- 보통 Docker와 K8s는 같이 사용됨
- Pod: 같은 디스크와 네트웍을 공유하는 1+ 컨테이너들의 집합
Kubernetes 아키텍쳐
- Node: 물리서버 or 가상서버
- Cluster: 1+ 노드의 집합
- Master: 클러스터를 관리해주는 역할 수행
- Kublelet: 노드와 마스터를 통신하게 해주는 에이전트
Kubernetes 프로세스
- Master안에는 여러 프로세스들이 돌고 있음
- API Server(Container로 동작): kube-apiserver
- Entrypoint of K8s cluster
- Web UI, CLI(kubectl), API
- Scheduler
- Pods생성과 할당(노드들의 상황 고려 -utilization)
- Controller Manager
- 전체 상황을 모니터링하고 fault tolerance 보장
- Master는 High Availability가 중요함
- etcd
- K8S환경 설정 정보가 저장되는 key/value 스토어로 백업됨
- Controller runtime
- 각 노드에 설치되며 대부분 Docker가 사용됨
Kubernetes의 Pod란 무엇인가?
- K8S 사용자가 사용하는 가장 작은 빌딩 블록
- 1Pod = 보통은 하나의 Container로 구성
- 하나보다 많은 경우에는 보통 helper container가 같이 사용됨
- 같은 Pod안에서는 디스크와 네트워크가 공유됨
- Fail-over를 위해 replicas를 지정하는 것이 일반적
- 다양한 방법으로 복제본을 유지
- Pod는 네트웍 주소를 갖는 self-contained server
'Programmers TIL' 카테고리의 다른 글
[Spark] Spark 데이터 시스템 구조 _TIL (1) | 2023.07.04 |
---|---|
[Airflow] Airflow 기타 기능 _TIL (1) | 2023.06.21 |
[Docker] Docker Compose_TIL (1) | 2023.06.15 |
[Docker] Docker Volume_TIL (0) | 2023.06.14 |
[Docker] Docker 명령 정리_TIL (0) | 2023.06.14 |