-
[k8s docs] 쿠버네티스란 무엇인가?Kubernetes/Kubernetes docs 2023. 5. 2. 17:43
Overview
- k8s는 컨테이너화된 워크로드와 서비스를 관리하기 위한 이식성이 있고, 확장가능한 오픈소스 플랫폼
- k8s는 크고, 빠르게 성장하는 생태계를 가지고 있음
- k8s는 어디서나 쉽게 사용 가능
※ 컨테이너화된 워크로드:
※ 이식성, 확장성:
Going back in time
전통적인 배포 시대:
물리서버에 애플리케이션을 구동하는 방식.
특정 애플리케이션이 리소스를 많이 잡아먹으면 다른 애플리케이션에도 성능을 저하시키는 단점.
서로 다른 물리서버에서 애플리케이션을 구동시키기에는 너무 많은 리소스를 필요로하여 많은 비용이 듦.가상화된 배포 시대:
단일 물리서버에서 여러대의 vm을 구동하는 방식.(Hypervisor 기술을 통해 가상의 완전한 하나의 머신으로 동작)
가상화는 vm간에 애플리케이션이 격리되기 때문에 애플리케이션끼리 자유롭게 액세스 하지 못해 일정수준의 보안성이 제공됨.
물리서버보다 리소스를 효율적으로 활용할 수 있어 비용 절감과 더 나은 확장성 제공.컨테이너 개발 시대:
컨테이너는 vm과 유사하지만 격리 속성을 완화하여 애플리케이션 간에 운영체제를 공유함.
컨테이너는 host os를 공유함. > 해당 부분에서 늘 들었던 의문은 그럼 컨테이너는 os를 갖지 않는가였음. 결론은 컨테이너도 os를 가짐. vm과 차이점은 vm은 guest os를 풀로 설치해야 하고, container는 host os와 다른 부분만 비교하여 패키징한 형태이며 커널은 host os와 공유하는 방식.
vm과 마찬가지로 파일시스템, cpu, 메모리, 프로세스 공간을 가짐.(격리 공간)
장점: 가벼움(경량화), 쉬운 애플리케이션 생성과 배포(컨테이너 이미지 생성이 쉽고 효율적), 지속적인 개발&통합 및 배포(안정적이고 주기적으로 컨테이너 이미지를 빌드해서 배포할 수 있고 빠르고 효율적으로 롤백가능)
, 개발과 운영의 분리(애플리케이션이 인프라스트럭처에서 분리???), 가시성, 클라우드 및 OS 배포판 간 이식성(ubuntu, rhel, 온프레미스, 퍼블릭클라우드 등 어디에서든 구동가능), 분산되고 유연하며 마이크로서비스 운영(독립적인 단위로 쪼개져서 동적으로 배포 및 관리), 리소스 격리(성능측면에서 효율적), 리소스 사용량이 효율적Why you need Kubernetes and what it can do
컨테이너를 효율적으로 관리하기 위해 필요한 것이 쿠버네티스. 쿠버네티스는 분산시스템(???)을 탄력적으로 실행하기 위한 프레임워크를 제공함.
- 서비스 디스커버리와 로드밸런싱: 쿠베는 dns이름을 사용하거나 자체 ip 주소를 통해 컨테이너를 노출할 수 있음. 컨테이너에 대한 트래픽이 많으면 쿠베는 네트워크 트래픽을 로드밸런싱(???)하여 배포가 안정적임.
- 스토리지 오케스트레이션: 로컬 저장소, Public Cloud Provider(aws, azure,,,) 와 같이 원하는 저장소 시스템을 탑재할 수 있음.
- 자동화된 롤아웃과 롤백
- 자동화된 bin packing(???): 각 컨테이너가 필요로 하는 cpu와 메모리를 쿠베에게 지시함. 쿠베는 컨테이너를 노드에 맞추어 리소스를 잘 사용할 수 있도록 해줌.
- 자동화된 복구: 쿠베는 실패한 컨테이너를 다시 시작하고, 컨테이너를 교체하며, 응답하지 않는 컨테이너를 죽이고, 서비스 준비가 끝날 때까지 그러한 과정을 클라이언트에 보여주지 않음.
- 시크릿과 구성 관리: 쿠베를 사용하면 암호, oauth 토큰 및 ssh 키와 같은 중요한 정보를 저장하고 관리할 수 있음. 컨테이너 이미지를 유지하면서 스택 구성에 시크릿을 노출하지 않고도 시크릿 및 애플리케이션을 배포 및 업데이트 할 수 있음What Kubernetes is not
쿠베는 전통적인 모든 것이 포함된 PaaS가 아님. 쿠베는 하드웨어 수준보다는 컨테이너 수준에서 운영되기 때문에, PaaS가 일반적으로 제공하는 배포, 스케일링, 로드밸런싱과 같은 기능을 제공하며, 사용자가 로깅, 모니터링 및 알림 솔루션을 통합할 수 있음.
쿠베는 PaaS 플랫폼을 만드는 구성 요소를 제공하지만, 필요한 경우 사용자의 선택권과 유연성을 지켜줌.