쿠버네티스(Kubernetes)
- 컨테이너화된 애플리케이션을 배포, 관리, 확장할 때 수반되는 다수의 수동 프로세스를 자동화하는 컨테이너 오케스트레이션 플랫폼
장점
- 여러 호스트 전반에서 컨테이너를 오케스트레이션합니다.
- 하드웨어를 더욱 효과적으로 활용하여 엔터프라이즈 애플리케이션을 실행하는 데 필요한 리소스를 극대화합니다.
- 애플리케이션 배포 및 업데이트를 제어하고 자동화합니다.
- 스토리지를 마운트 및 추가하여 스테이트풀(stateful) 애플리케이션을 실행합니다.
- 컨테이너화된 애플리케이션과 해당 리소스를 즉시 확장합니다.
- 서비스를 선언적으로 관리함으로써, 배포한 애플리케이션이 항상 의도한 대로 실행되도록 보장합니다.
- 자동 배치, 자동 재시작, 자동 복제, 자동 스케일링 기능으로 애플리케이션 상태를 점검하고 자가 치유(Self-healing)할 수 있습니다.
(https://www.redhat.com/ko/topics/containers/what-is-kubernetes)
기본 구성
Kubernetes Object(resource)
쿠버네티스는 상태를 관리하기 위한 대상을 오브젝트 나 리소스로 정의 합니다.
Pod
도커의 컨테이너와 비슷한 개념인데, 쿠버네티스에서 가장 작은 단위를 말한다.
이러한 작은 단위인 파드안에 컨테이너와 스토리지 등이 구성되어 있는데, 위 사진은 두개의 컨테이너가 표기되어있지만,
쿠버네티스에서는 한 개의 pod 당 하나의 컨테이너를 권장한다,
ReplicaSet
여러개의 파드의 단위를 레플리카셋이라고 한다. 중복해서 파드를 구성하는것으로, 이를 제어하는데 Depolyment 이다.
Kubernetes cluster
쿠버네티스 클러스터는 애플리케이션 컨테이너를 실행하기 위한 일련의 노드 머신입니다. 쿠버네티스를 실행 중이라면 클러스터를 실행하고 있는 것입니다
쿠버네티스 컨테이너는 개별 머신에 연결되지 않습니다. 대신에 클러스터 전체에서 추상화됩니다.
Service
네트워크와 관련된 오브젝트로 Pod을 외부 네트워크와 연결해주고 여러 개의 Pod을 바라보는 내부 로드 밸런서를 생성할 때 사용합니다. 즉 pod을 통해 구성된 서비스를 외부로 노출시킬 수 있도록 해줍니다.
Master - Node
쿠버네티스는 전체 클러스터를 관리하는 마스터와 컨테이너가 배포되는 노드로 구성되어 있습니다.
모든 작업은 마스터 노트에서 실행합니다. kubectl 이라는 명령어을 통해서 실행됩니다.
마스터 노드는 위와 같이 구성됩니다.
스케줄러 kube-scheduler
스케줄러는 할당되지 않은 Pod을 여러 가지 조건(필요한 자원, 라벨)에 따라 적절한 노드 서버에 할당해주는 모듈입니다.
큐브 컨트롤러 kube-controller-manager
쿠버네티스에 있는 거의 모든 오브젝트의 상태를 관리합니다.
클라우드 컨트롤러 cloud-controller-manager
클라우드 컨트롤러는 AWS, GCE, Azure 등 클라우드에 특화된 모듈입니다. 노드를 추가/삭제하고 로드 밸런서를 연결하거나 볼륨을 붙일 수 있습니다. 각 클라우드 업체에서 인터페이스에 맞춰 구현하면 되기 때문에 확장성이 좋고 많은 곳에서 자체 모듈을 만들어 제공하고 있습니다.
'Docker, k8s' 카테고리의 다른 글
k8s_yml 파일을 통한 Pod 실행 (0) | 2023.09.13 |
---|---|
k8s_ Pod 생성, Pod접속 , Service, Namespace (0) | 2023.09.12 |
Docker image build (0) | 2023.09.11 |
Dokcer haproxy + httpdphp + wordpress + mysql 실습 (1) | 2023.09.10 |
Cotainer 파일 복사 및 볼륨 (0) | 2023.09.07 |