2021. 5. 25. 09:32ㆍContainer/kubernetes
- 컨테이너화 된 어플리케이션을 효율적으로 배포하고 운영하기 위해 설계된 오픈소스 플랫폼
( 이해하기 위해서는 Container 사용부터 알아야함 )
◆ 컨테이너 기술의 필요성
※ 애플리케이션 실행에 필요한 라이브러리나 운영체제 패키지등을 모두 담아서 불변의 실행 환경을 만든다. 이렇게하면 개발자 들간에 테스트와 운영환경 간의 차이를 없앨 수 있어 개발 생산성을 높이고, 에플리케이션 정식 서비스를 안정적으로 배포할 수 있게 된다.
- 배포계획에 맞춰 에플리케이션을 신속하게 배포할 수 있다.
* 컨테이너 개수, CPU, 사용률, 메모리 사용량을 설정 가능
* 저장 공간, 네트워크 접근 제어, 로드밸런싱 기능 설정 가능
- 가동 중인 애플리케이션을 스케일 업/다운 할 수 있다.
* 요청이 많을 때는 컨테이너 수를 늘려서 처리 능력을 높임
* 요청이 적을 때는 컨테이너 수를 줄여서 자원 점유율이나 요금을 줄임
- 다양한 환경에서 쿠버네티스의 사용 가능
ex) 퍼블릭 클라우드 , 프라이빗 클라우드, 하이브리드 클라우드, 온프레미스 등등…
- 계속되는 변화를 전제로 설계된 높은 유연성과 확장성
* 마이크로 서비스화된 에플리케이션에 최적화된 실행 환경
* 느슨한 결합에 의한 유연성, 교체 용이성
* 다양한 스펙의 서버가 혼재하는 클러스터 구성에 사용가능
* 서버(노드)의 정지, 추가, 제거가 용이
* 저장소나 로드벨런서의 동적 프로비저닝
* 퍼블릭 클라우드 API와 연동한 쿠버네티스 조작
- 고가용성과 성능 관리
* 서버 정지 시 애플리케이션 재배포 자동화
* 애플리케이션의 이상 종료 시 자동 재기동
* 필요한 인스턴스의 개수를 유지
* 높은 부하에서 자동 스케일
1. 쿠버네티스가 해결하는 과제
- 지속적 통합 ( CI )과 지속적 배포 ( CD )를 효과적으로 해결할수 있다.
1) 애플리케이션의 빈번한 출시
- k8s의 롤아웃과 롤백 기능은 새로운 기능을 빈번하게 출시하고 버그 수정을 긴급 투입하는 것과 같은 민감한 작업을 안전하게 자동화 해준다.
- 무정지 교체가 가능하며 교체중 발생하는 성능 저하와 프로그램 충돌로 인한 서비스 정지를 막기위해 컨테이너 교체 정책을 설정할 수 있다.
2) 무정지 서비스
- IT 기술이 생활을 감싸기 시작하면서 서비스의 가용성이 중요한 요건이 되었다. k8s의 자기 회복기능은 무정지 서비스 운영을 도와준다.
3) 초기 비용을 낮추고 비즈니스 상황에 맞게 규모를 조정
- 컨테이너 기술은 애플리케이션과 실행 환경을 하나로 묶어서 배포할 수 있게 해준다. 그리고 k8s는 복수 노드 위에서 컨테이너가 조화롭게 돌아 갈 수 있도록 해준다.
4) 쿠버네티스와 외부 서비스와의 연동
- 에플리케이션 서버와 달리 데이터베이스에 대한 컨테이너화는 신중하게 접근할 필요가 있다.
이유는 컨테이너는 언제든지 재시작 될 수 잇는 일시적 존재이며, 상태를 포함하지 않는것을 전제로 하기때문이다. -> 이럴때 대안이 하이브리드 구축을 하는것이 방법임
5) 개발 환경과 운영 환경의 분리
- 쿠버네티스에서는 클러스터를 여러개의 가상환경으로 분할하는것이 가능하다. 그리고 각각 의 가상환경에 설정파일, 보안이 필요한 인증서나 비밀번호를 저장할 수 있다. 그리고 이 컨테이너에서는 이 저장된 정보에 접근할 수 있다.
6) 온프레미스와 클라우드 위에 구축
- 쿠버네티스는 인프라의 복잡성을 감추며, 일관된 인터페이스로 다룰 수 있도록 설계되어있다.
- 온프레미스와 클라우드 환경에서 동일한 인터페이스로 조작하며 운영이 가능하다.
7) 애플리케이션 중심의 오케스트레이션
- 애플리케이션 개발자가 YAML파일을 기술하여 쿠버네티스에 제출하면 로드밸런서, 저장소, 네트워크, 런타임 등의 환경이 구성된다.
8) 특정 기업에 종속되지 않는 표준과 기술
- 170여개의 회사가 참가하고 있기때문에 특정 회사에 종속되지 않은 표준 기술
9) 서버들의 가동률 높이기
- k8s에서 사용되는 컨테이너 기술은 에플리케이션이 정해진 서버에서 돌지 않아도 된다는 자유를 보장한다. 또한 CPU사용시간이나 메모리 요구량도 간단히 제어할수 있다.
3. 쿠버네티스의 아키텍쳐
- 클러스터를 담당하는 Master와 컨테이너화 된 애플리케이션을 실제로 실행하는 노드 Worker
- Master Node : kubectl와 같은 API클라이언트 부터 요청을 받아서 애플리케이션 배포, 스케일업/다운, 컨테이너 버전 업등의 요구를 처리, Master는 다중화 할 수 있다.(고가용성)
참고 : 15단계로 배우는 도커와 쿠버네티스 책을 참조했습니다.
'Container > kubernetes' 카테고리의 다른 글
| 쿠버네티스 ( kubernetes ) - 컨트롤러( Controller ) (0) | 2021.05.25 |
|---|---|
| 쿠버네티스 ( kubernetes ) - 서비스( Service )와 클러스터 네트워크 (0) | 2021.05.25 |
| 쿠버네티스 ( kubernetes ) - 파드( Pod ) (0) | 2021.05.25 |
| 쿠버네티스(kubernetes)의 기본개념에 관하여... (0) | 2021.05.25 |
| 컨테이너의 이해 (0) | 2021.05.25 |