사용자 입장에서 다양한 인프라 환경 속에서도 개념에 의한 일관적 요청을 할 수 있어야 하는데 그렇지 못하고 각각의 인프라나 클라우드를 제공하는 업체에만 맞는 특화된 세부 사항에 관한 것이 끼어 있어 사용자 입장에서 고려해야 할 사항이 많다(충분한 추상화를 제공하고 있지 않다.)는 의미라고 생각합니다.
개발자를 특정 머신으로부터 분리
밑에 써주신 의견에 동의합니다. 추가적으로 물리 서버 역시 포함한다고 생각합니다.
PersistentVolume
제가 이해한 pv의 개념과 aws s3의 경우는 서로 다른 개념이라서 스터디시간에 추가적인 설명을 해 주면 좋을 것 같습니다. 제가 이해한 각각의 개념은 다음과 같습니다.
PV: 쿠버네티스 클러스터에서 파드가 사용할 수 있는 지속적인 스토리지 자원
S3: 어떤 하드웨어로 구현되어 있는지 알 필요 없이, 간단한 API 호출로 스토리지 리소스를 사용할 수 있는 인프라 추상화의 한 예시
1장. 쿠버네티스 소개
TL;DR
쿠버네티스란
쿠버네티스의 이점
쿠버네티스란?
클라우드 네이티브
: 클라우드 컴퓨팅의 장점을 최대한 활용하여 애플리케이션을 개발하고 운영하는 방식신뢰성
: 가용성을 보장확장성
: 근본적인 재설계 없이도 시스템의 용량을 늘릴 수 있고, 자동으로 늘리거나 줄일 수 있음쿠버네티스의 이점
1. 개발 속도
❌ 시간 당 or 일별로 제공할 수 있는 기능의 수 ✅ 높은 가용성을 갖는 서비스를 유지하면서 제공할 수 있는 항목의 수
1.1. 불변성
기록
: 생성한 아티팩트와 생성 방법을 기록하기 때문에, 오류가 발생한 경우 해결 방법 명확하게 확인 가능롤백
: 기존 이미지가 그대로 남아 있기 때문에, 오류 발생 시 즉시 롤백 가능1.2. 선언형 컨피규레이션
명령형 컨피규레이션 (동작을 정의)
선언형 컨피규레이션 (상태를 정의 & 어떻게 할 건지는 쿠버네티스가 알아서~)
1.3. 온라인 자가 치유 시스템
2. 확장성
2.1. 애플리케이션과 클러스터의 손쉬운 확장
프로비저닝
: 네트워크, 스토리지 등 리소스를 할당하여 시스템을 사용할 수 있도록 하는 것2.2. 마이크로서비스를 통한 개발 팀 확장
단일 Pod
: 같은 Pod에 속한 모든 컨테이너는 동일한 노드에서 실행Pod Affinity
: 서로 다른 Pod에 위치한 컨테이너들끼리도 동일한 노드에 배치되도록 하는 방법Node Affinity
: 특정 노드에 특정 컨테이너가 실행되도록 제어하는 방법2.3. 일관성과 확장에 대한 고려 사항 분리
책임의 분리
API를 통한 운영 팀의 분리
3. 인프라 추상화
장점
PersistentVolume
: 쿠버네티스 클러스터의 실제 스토리지 리소스를 나타냄 (AWS S3, Google Cloud Storage와 같은 다양한 스토리지 서비스를 지원)PersistentVolumeClaim
: 사용자가 필요한 스토리지를 요청하는 방식4. 효율성
효율성 = 머신이나 프로세스가 수행한 유용한 작업과 해당 작업을 수행하는 데 소비한 전체 에너지 양의 비율
5. 클라우드 네이티브 에코시스템