본문 바로가기
🌴 DevOps/Docker & K8s

쿠버네티스 기본개념(컨테이너 운영환경/Container Orchestration /k8s특징)

by 카프리썬_ 2020. 4. 19.
728x90
728x90

1. 컨테이너 운영환경(Container Orchestration)

컨테이너들의 스케쥴링, 상태체크, 재기동하고, 로드밸런싱, 모니터링 등 컨테이너를 종합관리해주는 환경 

 

작은 수의 컨테이너라면 vm이나 도커엔진이 하나씩 처리해서 직접 배포하면 되지만,

컨테이너가 많아지면..? 어떻게 컨테이너를 관리할 것인가..?

 

예를들어, 16CPU 32GB 메모리 VM들에 컨테이너를 배포하는데, 컨테이너들이 사이즈가 다 다를수도 있음
그래서
자원을 효율적으로 사용하기 위해서

많은 컨테이너들을 '관리'하고 적재적소에 사용할 수 있도록 운영해주는 '환경'이 필요해짐

 

1-1. 컨테이너들의 '어떤관리'가 필요한가? 

적절한 위치에 컨테이너들을 배포하고, 

애플리케이션 특성에 따라서 같은 물리서버에 배포될지, 다른 서버에 배포될지 결정하는 관리

즉, 컨테이너를 적절한 서버에 배포해주는 '스케쥴링' 역할

 

1-2. 컨테이너들은 '어떤환경'이 필요한가?

컨테이너가 정상적으로 작동하고 있는지 체크하고,

문제가 있으면 재기동해주고, 

모니터링,삭제관리 등 컨테이너에 대한 종합적인 관리해주는 환경 

즉, 컨테이너들을 종합적으로 관리해주는 '컨테이너 운영환경'

 

컨테이너 스케줄링 역할 출처 https://bcho.tistory.com/1255

 

 1-3. Container Orchestration 역할

여러 개의 서버에 컨테이너를 배포하고 운영하면서

서비스 디스커버리Service discovery같은 기능을 이용하여 서비스 간 연결을 쉽게 해주는 것

서버마다 이름을 지어주고 하나한 접속해서 관리하는게 아니라

애플리케이션을 배포하고 부하가 생기면 자동으로 컨테이너를 늘리고, 재시작해주는 것 

 

2. 쿠버네티스란?

구글스러운 쿠버네티스 로고

컨테이너 운영환경 중에 가장 널리 사용되고 있는 솔루션

벤더 또는 플랫폼에 종속되지 않아서

Public Cloud(구글,Aws,Azure)에서도 사용가능

Private Cloud(Opend Stack) 에서도 사용가능

베어메탈(가상화 환경을 사용하지 않은 일반서버)에서도 가능

 

구글 내부의 서비스를 운영하고 있던 컨테이너 환경(borg 서비스)을 오픈소스화 한 것 

즉, 여러가지 컨테이너들을 자동으로 관리하고 운영할 수 있는 툴 

 

 

2-1. 쿠버네티스 기본적인 특징

go언어로 구현이 되어 있음

벤더나 플랫폼에 종속되지 않음

퍼블릭클라우드(GCP,AWS,Azure)에 사용가능, 프라이빗 클라우드나 베어메탈(가상화x)에도 배포가능

 

2-2. 쿠버네티스의 공식적인 특징

1) Automatic binpacking : 컨테이너 스케쥴링 역할

가용성에 대한 희생 없이, 리소스 사용과 제약 사항을 기준으로 자동으로 컨테이너를 스케줄

2) Self-healing

자동으로 문제가 발생한 노드의 컨테이너를 대체 (룰/정책에 따른 헬스 체크)

3) Horizontal scaling

CPU와 메모리와 같은 리소스 사용에 따라 자동으로 어플리케이션을 확장

경우에 따라서, 사용자 정의 측정값을 기준으로 한 동적인 확장 가능

4) Service discovery and Load balancing

Container에 고유한 IP 부여

여러 개의 Container을 묶어 단일 service로 부여하는 경우 단일 DNS name으로 접근하도록 로드 밸런싱을 제공함

5) Automatic rollouts and rollbacks

다운 타임 없이 애플리케이션의 새로운 버전 및 설정에 대한 롤아웃/롤백 가능

6) Secret and configuration management (pv, pvc)

애플리케이션의 secret과 configuration 정보를 이미지와 독립적으로 구분하여 별도의 이미지 재생성 없이 관리

7) Storage orchestration

소프트웨어 정의 저장장치를 기반으로 로컬, 외부 및 저장소 솔루션을 위한 동일한 방법으로 컨테이너에 마운트 할 수 있음

8) Batch execution

CI 워크로드와 같은 batch성 작업 지원, crontab 형식으로도 스케줄링 가능

 

 

 

 

2-3. 쿠버네티스 차별화된 특징

1) 전세계적 스케일의 경험과 기술이 녹아들어있다.

2) 다양한 배포방식

Deployment : 새로운 버전의 애플리케이션을 다양한 전랴으로 무중단 배포가능

StatefulSets : 실행 순서를 보장하고 호스트이름과 볼륨을 일저아게 사용할 수 있음

DemonSets : 로그나 모니터링 등 모든 노드에 설치가 필요한 경우

Job, CronJob : 배치성 작업에 대한 배포방식

3) Ingress 설정  

다양한 웹 애플리케이션을 하나의 로드밸런서로 서비스 할 수 있음

+기존에 웹애플리케이션 배포방식
외부에서 직접 접근할 수 없게 내부방설치 + 외부접근 프록시 서버 사용 

하지만, 프록시 서버는 도메인과 PATH조건에 따라서 서버나 IP가 바뀌면 설정 매번 수정해야함

-> ingress설정 : 이 변경사항을 자동화해서 프록시 서버에 접속해서 일일이 수정할 필요가 없음

4) 외부 클라우드와 손쉬운 연동가능

부하에 따라서 자동으로 서버를 늘리는 AutoScaling

ip를 할당받아 부하를 붓난하는 LoadBalancer 가능 

동일한 설정파일을 가지고 서로 다른 클라우드에서 동일하게 사용가능

 

 

https://bcho.tistory.com/1255?category=731548

 

쿠버네티스 #1 - 소개

Kubernetes #1 - 소개 조대협 (http://bcho.tistory.com) 배경 도커와 쿠버네티스를 알게 된건 수년전인데, 근래에 들어서 다시 쿠버네티스를 보기 시작하였다. 컨테이너 기반의 환경은 배포에 장점이 있고 마이크..

bcho.tistory.com

https://soyoung-new-challenge.tistory.com/76

 

[Kubernetes] 쿠버네티스 시작하기

이번 포스팅은 강의를 듣고 쿠버네티스에 대해 정리한 포스팅. 아래 내용은 모두 강의에 있는 내용을 정리한 것입니다. 강의 링크 : https://www.youtube.com/watch?v=l42GttmnnZ4 Container의 개념, S/W 실행에..

soyoung-new-challenge.tistory.com

 

https://subicura.com/2019/05/19/kubernetes-basic-1.html#%EC%BF%A0%EB%B2%84%EB%84%A4%ED%8B%B0%EC%8A%A4%EC%9D%98-%EA%B3%BC%EA%B1%B0-%ED%98%84%EC%9E%AC-%EB%AF%B8%EB%9E%98

 

쿠버네티스 시작하기 - Kubernetes란 무엇인가?

쿠버네티스는 컨테이너를 쉽고 빠르게 배포/확장하고 관리를 자동화해주는 오픈소스 플랫폼입니다. 1주일에 수십억 개의 컨테이너를 생성하는 구글이 내부 배포시스템으로 사용하던 borg를 기반으로 2014년 프로젝트를 시작했고 여러 커뮤니티의 아이디어와 좋은 사례를 모아 빠르게 발전하고 있습니다. 이 글은 쿠버네티스가 무엇인지 궁금한 엔지니어를 대상으로 쿠버...

subicura.com

 

728x90
반응형