읽기 설정
도커를 마치 하나의 컨테이너 선박이라고 생각하시면 돼요. 앱을 실행하는 데 필요한 모든 것을 묶어서 패키징해 줍니다.00:00
반면에 쿠버네티스는 전체 항구와 같아서, 수천 개의 컨테이너를 관리하고 어디에 배치할지 결정합니다.00:05
어떻게 실행되는지, 그리고 문제가 발생했을 때 어떻게 되는지를 관리합니다. 하지만 이 두 가지가 어떻게 함께 작동하는 걸까요?00:11
Docker는 격리된 환경에서 애플리케이션을 빌드, 패키징, 배포할 수 있도록 해주는 플랫폼입니다.00:16
컨테이너라고 부릅니다. 컨테이너는 앱에서 필요로 하는 모든 것, 코드, 런타임, 라이브러리, 그리고 의존성을 포함합니다. 마치 이식 가능하고 가벼운 가상 머신을 만드는 것과 같습니다.00:22
이것은 휴대용, 경량 가상 머신을 만드는 것과 비슷하다고 생각하시면 됩니다.00:29
하지만 오버헤드는 없습니다. 이 Dockerfile은 도커에게 파이썬 이미지를 사용하고,00:34
작업 디렉터리를 설정하고, 앱 파일을 복사하고, 의존성을 설치하고, 앱을 실행하도록 지시합니다.00:39
쿠버네티스는 컨테이너 오케스트레이션 플랫폼입니다. 컨테이너를 확보하신 후, 쿠버네티스가 여러 대의 기계에 걸쳐 이들을 관리합니다.00:45
확장, 로드 밸런싱을 처리합니다.00:51
그리고 자체 복구 기능도 제공합니다. 천 개의 컨테이너를 백 개의 서버에서 실행하는 것을 상상해 보세요.00:54
쿠버네티스가 이를 가능하게 합니다.00:59
이 설정은 컨테이너화된 앱의 세 복제본을 배포하고 Kubernetes가 계속 실행하도록 보장합니다.01:01
Kubernetes는 필요에 따라 자동으로 확장하여 이들을 계속 실행합니다. Docker는 컨테이너를 생성합니다.01:06
쿠버네티스는 이들을 관리하고 오케스트레이션합니다. 쿠버네티스 없이도 도커 컨테이너를 실행할 수 있지만, 대규모 분산 시스템의 경우에는 쿠버네티스가 필수적입니다. 자, 이제 좀 더 기술적인 내용으로 자세히 풀어보도록 하겠습니다.01:10
자세히 살펴봅시다. 이미 도커가 애플리케이션을 컨테이너로 패키징한다는 것을 알고 계실 겁니다. 쿠버네티스는 이러한 컨테이너들을 오케스트레이션합니다. 이들은 어떻게 조화를 이루나요? 도커는 구성 요소입니다. 도커의 핵심 역할은 격리된 환경, 즉 컨테이너에서 애플리케이션을 패키징하고 실행하는 것입니다.01:17
자세히 설명해 드릴게요. 이미 도커가 어플리케이션을 컨테이너로 묶는다는 것을 알고 계실 겁니다.01:21
쿠버네티스는 그 컨테이너들을 조율하고 관리합니다. 어떻게 연결되는 걸까요? 도커는 기본적인 구성 요소입니다.01:25
주요 역할은 격리된 환경, 즉 컨테이너 안에서 애플리케이션을 패키징하고 실행하는 것입니다.01:31
도커 파일은 어떻게 해야 하는지를 설명하는 텍스트 파일입니다.01:36
컨테이너를 만들기 위한 방법을 정의합니다. 예를 들어, Python이나 Node.js 같은 기본 이미지를 지정하고, 의존성을 설치하고, 파일을 복사하며, 컨테이너가 실행될 명령을 설정합니다.01:40
필요한 의존성을 설치하고, 파일을 복사하며, 컨테이너가 실행될 명령을 설정합니다.01:46
도커 이미지는 도커 파일의 결과물입니다.01:50
이미지 안에는 코드, 라이브러리, 시스템 도구 등 앱을 실행하는 데 필요한 모든 것이 포함되어 있습니다.01:54
도커 컨테이너는 도커 이미지의 실행 중인 인스턴스입니다. 02:01
마치 어디든 도커를 지원하는 시스템에서 실행할 수 있는 격리된 프로세스라고 생각하시면 됩니다.02:04
도커입니다. 도커는 개발자들이 앱을 위한 일관된 환경을 만들 수 있도록 해 줍니다.02:09
개발, 스테이징, 그리고 프로덕션 환경에서 코드가 동일한 방식으로 실행되도록 보장할 수 있습니다.02:14
쿠버네티스는 규모 관리에 관한 것입니다. 도커 컨테이너를 위한 강력한 오케스트레이션 시스템입니다.02:19
그리고 도커만으로는 처리하기 어려운 확장성 관련 기능을 제공합니다.02:25
쿠버네티스는 하나 이상의 도커 컨테이너를 Pod로 묶습니다.02:29
그리고 Pod는 쿠버네티스에서 가장 작은 단위이며, 동일한 네트워크와 스토리지를 공유합니다.02:33
이는 서로 긴밀하게 통신해야 하는 애플리케이션에 적합합니다.02:39
쿠버네티스는 배포를 사용하여 앱의 원하는 상태를 관리합니다.02:44
디플로이먼트는 파드의 복제본 개수를 정의하고, 쿠버네티스는 그 개수를 유지하도록 보장합니다.02:48
간단히 말해서, 디플로이먼트 매니저는...02:54
디플로이먼트 컨트롤러는 애플리케이션 워크로드를 실행하기 위해 팟 집합을 변경하며, 보통은 상태를 유지하지 않는 워크로드입니다.02:56
그리고 이 디플로이먼트는 팟과 레플리카셋에 대한 선언적 업데이트를 제공합니다.03:01
레플리카 세트는 특정 수의 파드 복제본이 동시에 실행되도록 보장합니다.03:06
따라서 개발자로서, 배포에 원하는 상태를 정의하게 됩니다.03:11
그리고 배포 컨트롤러는 실제 상태를 원하는 상태로 통제된 속도로 변경합니다.03:15
배포 컨트롤러는 클러스터의 공유 상태를 감시하는 제어 루프입니다.03:21
API 서버를 통해 변경을 수행하여 현재 상태를 원하는 상태로 이동시키려고 합니다.03:26
쿠버네티스는 트래픽 부하에 따라 파드의 수를 자동으로 조정할 수 있습니다.03:32
따라서 수평 Pod 자동 스케일링은 Pod를 추가하거나 제거하여 스케일링합니다.03:37
HPA는 새로운 Pod 복제본을 시작합니다.03:41
추가 트래픽을 처리할 수 있습니다. 수요가 감소하면 HPA는 워크로드를 축소합니다.03:44
HPA는 HTTP 요청 처리량, 메시지 큐 크기 등 하나 이상의 지표를 기반으로 확장할 수 있습니다.03:49
CPU 사용률, 메모리 사용률, 실제 리소스 사용량과 같이 파드(Pod)의 CPU나 메모리 사용량이03:56
특정 임계값을 초과할 때입니다.04:04
쿠버네티스는 또한 들어오는 네트워크 트래픽을 자동으로 포드에 분산하여, 어떤 컨테이너라도 과부하되지 않도록 합니다.04:05
그리고 포드 내의 컨테이너가 실패하면, 쿠버네티스는 원하는 상태를 유지하기 위해 컨테이너를 재시작합니다.04:12
노드가 다운되면, 쿠버네티스는 다른 사용 가능한 노드에 팟을 재할당합니다.04:19
간단히 말해서, 도커는 컨테이너를 실행하고 쿠버네티스는 배포, 확장 및 관리를 담당합니다.04:24
수백 개에서 수천 개의 컨테이너를 여러 서버에 걸쳐 관리할 수 있습니다.04:31
복잡하고 분산된 애플리케이션을 실행하는 데 있어 최고의 도구입니다.04:35
그래서 도커와 쿠버네티스의 간단한 작업 흐름은 다음과 같습니다.04:40
개발자들은 애플리케이션과 모든 의존성을 포함한 컨테이너로 패키징하기 위해 도커를 사용합니다.04:43
도커 이미지는 도커 허브나 구글 컨테이너 레지스트리 같은 컨테이너 레지스트리에 푸시됩니다.04:49
쿠버네티스는 레지스트리에서 이미지를 가져와 포드(pod)로 배포합니다.04:55
그런 다음, 쿠버네티스는 트래픽을 모니터링하고 필요에 따라 파드를 수평적으로 확장합니다.04:59
또한, 유입 트래픽이 정상적인 컨테이너로 라우팅되도록 보장합니다.05:05
만약 컨테이너가 중단되면, Kubernetes는 자동으로 재시작하여 원하는 복제본 수를 유지합니다.05:09
궁극적으로 Docker와 Kubernetes를 함께 사용해야 하는 이유는 무엇일까요?05:15
도커만으로는 단일 컨테이너 앱이나 로컬 개발 환경에는 적합하지만요,05:20
하지만 많은 컨테이너를 관리하고 확장해야 할 때는 도커만으로는 부족합니다.05:25
Docker and Kubernetes is essential for production environments where automated scaling,05:30
failover, and management across multiple machines is critical.05:35
그러므로 도커 자체는 앱을 빌드하고 테스트하는 것을 간편하게 하지만, 쿠버네티스는 이러한 앱들이 규모에 맞게 안정적으로 실행되도록 보장합니다.05:39
함께 사용하면 현대적인 클라우드 네이티브 애플리케이션의 기반이 됩니다.05:46
AI Summary
이 글에서는 컨테이너 기술인 Docker와 컨테이너 오케스트레이션 플랫폼인 Kubernetes에 대해 설명하고 있어요. Docker는 애플리케이션을 컨테이너로 패키징하고, Kubernetes는 이 컨테이너들을 관리하고 운영하는 역할을 한답니다. Docker만으로는 충분한 규모가 아닌, 복잡하고 많은 컨테이너를 관리해야 할 때 Kubernetes를 함께 사용하면 클라우드 네이티브 애플리케이션을 효율적으로 구축하고 운영할 수 있어요.
Key Highlights
- •Docker는 애플리케이션을 컨테이너로 패키징하는 플랫폼입니다.
- •Kubernetes는 컨테이너를 관리하고 오케스트레이션하는 플랫폼입니다.
- •Docker는 컨테이너를 만들고, Kubernetes는 이 컨테이너들을 관리합니다.
- •대규모 분산 시스템에서는 Kubernetes가 필수적입니다.
- •Docker와 Kubernetes를 함께 사용하면 클라우드 네이티브 애플리케이션을 구축하기 용이합니다.


![Docker Crash Course for Absolute Beginners [NEW]](https://i.ytimg.com/vi/pg19Z8LL06w/mqdefault.jpg)