반응형
쿠버네티스
- 컨테이너화된 애플리케이션을 효율적으로 배포, 운영하기 위해 설계된 오픈소스 플랫폼
쿠버네티스 개요
- 애플리케이션을 신속하게 배포 가능
- 컨테이너 개수, CPU 사용률, 메모리 사용량 설정
- 저장공간, 네트워크 접근 제어, 로드밸런싱 기능 설정
- 가동 중인 애플리케이션을 스케일 업/다운 가능
- 요청이 많을 때는 컨테이너 수를 늘려서 처리 능력을 높임
- 요청이 적을 때는 컨테이너 수를 줄여서 자원 점유율이나 요금을 줄임
- 새로운 버전의 애플리케이션을 무정지로 업그레이드 가능
- 하드웨어 가동률을 높여 자원 낭비를 줄일 수 있음
- 높은 유연성과 확장성
- 마이크로서비스화된 애플리케이션에 최적화
- 다양한 스펙의 서버가 혼재하는 클러수터 구성에 사용 가능
- 서버(노드)의 정지, 추가, 제거 용이
- 저장소나 로드밸런서의 동적 프로비저닝
- 퍼블릭 클라우드 API와 연동한 쿠버네티스 조작
- 고가용성과 성능 관리
- 서버 정지 시 애플리케이션 재배포 자동화
- 자동 재기동
- 필요한 인스턴스 개수 유지
- 높은 부하에서 자동 스케일
쿠버네티스가 해결하는 과제
- 애플리케이션의 빈번한 출시
- 무정지 서비스
- 초기 비용을 낮추고 비지니스 상황에 맞게 규모를 조정
- 쿠버네티스와 외부 서비스와의 연동
- 개발 환경과 운영 환경의 분리
- 온프레미스와 클라우드 위에 구축
- 애플리케이션 중심의 오케스트레이션
- 특정 기업에 종속되지 않는 표준 기술
- 서버들의 가동률 높이기
쿠버네티스 아키텍처
- 클러스터 관리를 담당하는 마스터와 컨테이너화된 애플리케이션을 실제로 실행하는 노드라는 단 두 종류의 서버로 구성
- 마스터는 kubectl과 같은 API 클라이언트로부터 요청을 받아서 애플리케이션의 배포, 스케일 업/다운, 컨테이너의 버전 업 등의 요구 처리
레지스트리와 쿠버네티스의 관계
- docker build로 이미지를 빌드한다.
- docker push로 이미지를 레지스트리에 등록한다.
- kubectl 커맨드로 매니페스트에 기재한 오브젝트들의 생성을 요청한다.
- 매니페스트에 기재된 레포지터리로부터 컨테이너의 이미지를 다운로드한다.
- 컨테이너를 파드 위에서 기동한다.
쿠버네티스 계층 구조
- 클라이언트의 역할
- 오브젝트 생성/변경/삭제
- 상태 조회
- 마스터의 역할
- k8s 클러스터 관리
- 파트(컨테이너) 관리
- 노드의 역할
- 컨테이너 실행 환경
- 컨테이너의 종류
- 어플리케이션
- 미들웨어
- 실행 환경 유지
쿠버네티스 API 오브젝트
쿠버네티스 API란?
CLI인 kubectl은 마스터 노드상의 kube-apiserver에게 API 규약에 맞게 매니페스트를 YAML 형식 혹은 JSON 형식으로 전송하여 오브젝트를 생성, 변경, 삭제함. 파이썬, Go와 같은 다양한 프로그램 언어로 API가 제공되어 쿠버네티스 운영 자동화가 가능
오브젝트란?
k8s 클러스터 내부의 엔티티로서, 파드, 컨트롤러, 서비스 등의 인스턴스 등을 의미. 오브젝트를 만들 때는 반드시 이름을 부여해야 하고 같은 종류의 오브젝트의 이름은 하나의 네임스페이스에서 유일해야 함
워크로드
오브젝트의 카테고리를 나타내는 용어로 컨테이너와 파드, 컨트롤러의 그룹을 의미
컨테이너
컨테이너는 반드시 파드 내에서 실행해야 함
파드(Pod)
컨테이너를 실행하기 위한 오브젝트. 파드는 한 개 혹은 여러 개의 컨테이너를 담을 수 있음
컨트롤러
파드의 실행을 제어하는 오브젝트. 여러 종류의 컨트롤러가 있어 각 컨트롤러의 기능을 이해하고 목적에 맞게 구별해서 사용해야 함
설정
설정을 저장할 수 있는 컨피그맵과 비밀번호 등을 담기 위한 시크릿이라는 오브젝트가 있음. 이들을 통해 네임스페이스에 저장된 정보는 컨테이너 내 파일이나 환경 변수를 통해 애플리케이션 참조 가능
서비스
파드와 클라이언트를 연결하는 역할
스토리지
파드나 컨테이너는 실행 시에만 존재하기 때문에 데이터를 잃지 않기 위해 퍼시스턴트 볼륨을 사영하여 데이터를 저장해야 함
Reference
반응형
'DevOps > Kubernetes' 카테고리의 다른 글
쿠버네티스(kubernetes) Namespace, ConfigMap, Secret (0) | 2022.05.14 |
---|---|
쿠버네티스(kubernetes) Deployment, Service (0) | 2022.05.14 |
[troubleshooting] [kubelet-check] It seems like the kubelet isn't running or healthy. (0) | 2022.05.14 |
쿠버네티스(kubernetes) Pod, Replica Set (0) | 2022.05.08 |
쿠버네티스(Kubernetes) 설치 (0) | 2022.05.07 |