DevOps/Kubernetes

[Kubernetes] 쿠버네티스란?

twoDeveloper 2022. 8. 23. 11:12

■ 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