티스토리 뷰
쿠버네티스 = k8s
컨테이너 오케스트레이션 솔루션
- 다수의 컨테이너들을 관리하면서 자동 배포, 배포된, 컨테이너의 동작 보증, 부하에 따른 동적 확장 등의 기능을 담당
도커와 잘 어울리는 실행 환경 구성 도구
- 도커 컨테이너들을 클러스터 내에 실행하고 관리하는데 적합
- 지속적 통합과 인도(CI,CD)에 유효하게 적용할 수 있음
- 컨테이너는 포드라고 불리는 K8S오브젝트와 연관하여 실행(포드 위에서 실행한다고 대강 표현)
k8s 클러스터의 구성 요소
- 클러스터는 하나 이상의 노드로 구성됨
마스터 노드
- API서버, etcd - 클러스터의 중심 역할을 하는 구성 요소들
- 컨트롤러 매니저, 스케쥴러
- kubelet
워커 노드
- 컨테이너 런타임(CRI) - 포드를 이루는 컨테이너의 실행을 담당
- kubelet - 포드의 구성 내용을 받아 CRI에 전달하고 컨테이너들의 동작 상태를 모니터링
쿠버네티스가 제공하는 주요 기능
쿠버네티스(Kubernetes)는 컨테이너 기반 서비스를 안정적으로 운영하고 관리하기 위해 다양한 기능을 제공합니다. 주요 기능은 다음과 같습니다.
- 컨테이너 밸런싱
애플리케이션을 여러 개 복제해야 할 경우, 쿠버네티스는 포드(Pod)의 부하를 자동으로 분산시켜줍니다. 개발자가 복제할 개수만 지정하면, 나머지는 쿠버네티스가 알아서 처리합니다.
- 트래픽 로드 밸런싱
애플리케이션 복제본이 두 개 이상 존재할 경우, 쿠버네티스는 클러스터 내부에서 트래픽을 고르게 분배하여 안정적인 서비스를 제공합니다.
- 동적 수평 스케일링
시스템 부하에 따라 인스턴스 수를 자동으로 늘리거나 줄일 수 있어, 자원을 보다 효율적으로 활용할 수 있습니다.
- 오류 복구
쿠버네티스는 포드와 노드 상태를 지속적으로 모니터링하며, 장애가 발생하면 자동으로 새 포드를 생성해 설정된 복제본 수를 유지합니다.
- 롤링 업데이트
애플리케이션을 업데이트할 때 모든 인스턴스를 한꺼번에 교체하지 않고, 순차적으로 변경함으로써 서비스 중단 없이 배포할 수 있도록 도와줍니다.
- 스토리지 오케스트레이션
애플리케이션에서 필요한 경우, 다양한 스토리지 시스템(예: 로컬 디스크, 클라우드 스토리지 등)을 손쉽게 연결하고 사용할 수 있습니다.
- 서비스 디스커버리
쿠버네티스는 자체 DNS 기반 시스템을 통해 수명이 짧고 유동적인 포드들을 안정적으로 연결해주는 기능을 제공합니다. 이를 통해 클러스터 내 서비스 간의 통신을 쉽게 구성할 수 있습니다.
쿠버네티스의 기본 오브젝트
쿠버네티스를 구성하는 기본 단위들을 간단히 정리하면 다음과 같습니다.
- 포드(Pod)
한 개 이상의 컨테이너로 구성되며, 특정 작업을 수행하기 위한 최소 실행 단위입니다. 고유한 IP를 가지고 있으며, 필요에 따라 사라지거나 교체될 수 있습니다.
- 네임스페이스(Namespace)
쿠버네티스 클러스터 내 리소스를 논리적으로 분리하여 관리할 수 있는 단위입니다. 여러 프로젝트나 팀이 하나의 클러스터를 공유할 때 유용합니다.
- 볼륨(Volume)
포드가 생성될 때 해당 포드에서 사용할 수 있는 파일 시스템 디렉토리를 제공합니다. 컨테이너가 재시작되더라도 데이터를 유지할 수 있도록 도와줍니다.
- 서비스(Service)
동적으로 생성되고 종료되는 포드들에 대해 안정적인 접근 경로를 제공합니다. 클러스터 내부 또는 외부에서 포드에 접근할 수 있도록 지원합니다.
- Deployment
Deployment는 쿠버네티스에서 애플리케이션을 배포할 때 주로 사용하는 오브젝트입니다. 동일한 포드들의 집합인 레플리카셋(ReplicaSet)을 관리하며, 다음과 같은 특징이 있습니다.
- 자동 업데이트 및 롤백 기능 제공
- 배포 버전 관리 가능
- 상태가 없는(Stateless) 애플리케이션 배포에 적합
- 간단한 레플리카셋보다 유연한 운영 가능
k8s 인프라 구축
- 로컬 환경
- Publoc clouds
- On-prem 설치
로컬 환경에서 쿠버네티스 인프라 구축
1. Docker Desktop 실행 -> 설정에서 쿠버네티스 들어가기


성공 후 cmd를 켜서
kubectl get nodes

이렇게 나오면 성공이다.
