■ Kubernetes (K8s) 란?
- 쿠버네티스는 컨테이너화 된 워크로드와 서비스를 관리하기 위한 '이식성'이 있고, '확장가능'한 Open Source Platform
※ 워크로드란?
- 쿠버네티스에서 구동되어지는 애플리케이션
■ Kubernetes 가 탄생하게 된 배경
1. Traditional Deployment
- Dedi Server
- 보시는 바와 같이 애플리케이션 물리 서버에서 실행
- 하나의 물리 서버에서 여러 애플리케이션의 리소스 한계를 정의할 방법이 없음, 따라서 리소스 할당에 문제가 발생
- 리소스가 충분히 활용되지 않는다는 점에서 확장 가능하지 않음
- 물리 서버를 많이 유지하기 위해서는 조직에게 많인 비용이 발생
2. Virtualized Deployment
- Traditional Deployment 방식에서 리소스 할당 문제로 인해 가상화 방식이 도입
- 단일 물리 서버의 CPU에서 여러 가상 시스템 (VM)을 실행할 수 있게 지원
- 가상화를 사용하면 VM간에 애플리케이션을 격리
- 격리된 애플리케이션의 정보를 다른 애플리케이션에서 자유롭게 액세스 불가
- 일정 수준의 보안성을 제공
- 각 VM은 가상화된 HW 상에서 자체 OS를 포함한 모든 구성 요소를 실행하는 하나의 완전한 머신
3. Container Deployment
- 컨테이너는 VM과 유사하지만 격리 속성을 완하하여 애플리케이션 간에 OS를 공유 (가벼움)
- VM과 마찬가지로 컨테이너에는 자체 파일 시스템, CPU 점유율, 메모리, 프로세스 공간 등이 존재
- 기본 인프라와의 종속성을 끊었기 때문에, 클라우드나 OS 배포본에 모두 이식 가능
■ Kubernetes 특징
1. 서비스 디스커버리와 로드 밸런싱
- 쿠버네티스는 DNS 이름을 사용하거나 자체 IP 주소를 사용하여 컨테이너를 노출
- 컨테이너에 대한 트래픽이 많으면, 쿠버네티스는 네트워크 트래픽을 로드밸런싱하고 배포하여 배포가 안정적으로 이루어질 수 있게 한다.
2. 스토리지 오케스트레이션
- 쿠버네티스를 사용하면 로컬 저장소, 공용 클라우드 공급자 등과 같이 원하는 저장소 시스템을 자동을 탑재 가능
3. 자동화된 롤아웃과 롤백
- 쿠버네티스를 사용하여 배포된 컨테이너의 원하는 상태를 서술할 수 있으며 현재 상태를 원하는 상태로 설정한 속도에 따라 변경 가능
4. 자동화된 빈 패킹
- 컨테이너화된 작업을 실행하는데 사용할 수 있는 쿠버네티스 클러스터 노드를 제공
- 컨테이너가 필요로 하는 CPU와 메모리를 쿠버네티스에게 지시
- 쿠버네티스는 컨테이너를 노드에 맞춰 리소스를 가장 잘 사용할 수 있도록 해줌
5. 자동화된 복구
- 쿠버네티스는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체
- '사용자 정의 상태 검사'에 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에 보여주지 않음
6. 시크릿과 구성 관리
- 쿠버네티스를 사용하면 암호, OAuth 및 SSH Key 같은 중요한 정보를 저장하고 관리 가능
- 컨테이너 이미지를 재구성하지 않고 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션 구성을 배포 및 업데이트 할 수 있음
---
☞ 참고자료
https://kubernetes.io/ko/docs/concepts/overview/what-is-kubernetes/
쿠버네티스란 무엇인가?
쿠버네티스는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식할 수 있고, 확장 가능한 오픈소스 플랫폼으로, 선언적 구성과 자동화를 모두 지원한다. 쿠버네티스는 크고 빠르게 성장하
kubernetes.io
https://www.linkedin.com/pulse/traditional-deployment-vs-virtualization-container-shazly-abozeid
Traditional Deployment VS Virtualization VS Container
History of running a software Traditional Deployment Early on, organizations ran applications on physical servers. Install or use an existing operating system.
www.linkedin.com
'DevOps > Kubernetes' 카테고리의 다른 글
[kubernetes] namespace (0) | 2022.08.24 |
---|---|
[Kubernetes] 쿠버네티스 아키텍처 (0) | 2022.08.23 |
[kubernetes] Argo CD Install (0) | 2021.12.22 |
[kubernetes] Helm으로 Jenkins Deploy (1) | 2021.11.12 |
[kubernetes] EKS Cluster 내부에 AWS RDS 구축 (0) | 2021.11.10 |