CS 공부/DevOps

Kubernetes (쿠버네티스) 이론

imsmile2000 2024. 10. 22. 14:31

쿠버네티스란?

컨테이너화된 workload와 서비스를 관리하기 위한 확장 가능한 오픈소스 플랫폼

 

  • 도커 이미지가 많아지면서 관리해야할 컨테이너와 서버들이 많아짐
  • 컨테이너의 관리를 자동화할 도구(오케스트레이션 툴)의 필요성
  • 컨테이너를 쉽고 빠르게 배포 및 확장하고, 관리를 자동화해주는 오픈소스 플랫폼

 

 

쿠버네티스의 특징

  1. 거대한 커뮤니티와 생태계 (대기업들의 지원)
  2. 다양한 배포 방식
    • 여러대의 애플리케이션 띄우고 싶을 때: Deployment
    • 로그, 모니터링 등 모든 서버에 설치 필요한 경우: Daemon Set
    • 배치성 작업: Job, Cronjob

Deployment, StatefulSets, Job, Cronjob 등

 

 

3. Namespace & Label

  • Namespace 기능으로 하나의 클러스터를 논리적으로 구분하여 사용 가능
  • Label 기능으로 유연, 확장성 있게 리소스 관리

 

4. RBAC (role-based access control)

  • 누가, 무엇을, 어디에(Namespace) 실행할 수 있는지 결정하는 권한 및 액세스 관리 형식
  • 각 리소스에 대해 CRUD 권한을 손쉽게 지정
  • 클러스터 전체에 적용하거나 특정 Namespace에 적용 가능
  • AWS IAM 연동해서 사용 가능

 

 

5. Auto Scaling으로 손쉽게 리소스 확장 가능

6. Federation, Multi Cluster로 클라우드의 쿠버네티스와 서버의 쿠버네티스 묶어서 하나로 사용 가능

 

 

쿠버네티스 기본 개념

Master-node 구조

 

  • 중앙(Master)에 API 서버와 상태 저장소를 두고 각 서버(Node)의 에이전트(kubelet)과 통신하는 구조
  • 모든 명령은 master의 API 서버를 호출하고, node는 master와 통신하면서 필요한 작업 수행
  • Kubectl이라는 클라이언트 도구로 API 서버 접근 가능

 

 

쿠버네티스 Object

Pod

  • 쿠버네티스에서 배포할 수 있는 가장 작은 단위
  • 여러개의 컨테이너, 스토리지, 네트워크 합쳐진 구조
  • 컨테이너를 한개 사용해도 Pod로 감싸서 관리

 

Replicaset & Deployment

  • Pod를 여러개 복제하여 관리하는 Object
  • 복제할 개수, Label 선택자, 생성할 Pod의 설정값 등 설정
  • 자동으로 롤링 업데이트 가능

 

Service

  • Pod를 여러개 복제하여 관리하는 Object