[K8s] Kubernetes(K8s)_TIL

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