과거의 개발, 운영에 대해서 생각해보며 쿠버네티스에 대해 얘기해보려 한다. 과거에는 개발 팀에서 애플리케이션을 만든 후에 운영 팀에 넘겨주면 애플리케이션을 배포하고, 관리하고, 계속 실행했다.
하지만 이제 애플리케이션을 개발하는 사람이 배포와 관리 실행까지 참여하는 것이 DevOps 이며 그것을 가능하게 하는 것이 Kubernetes 이다.
바로 Orchestration management system 이다.
Kubernetes ? 리눅스 컨테이너 기술 을 사용해 실행 중인 애플리케이션을 분리하도록 만들어주어 컨테이너 어플리케이션을 쉽게 배포하고 관리할 수 있게 해주는 소프트웨어 시스템
Container를 통해 동일한 하드웨어에서 더 많은 구성요소를 실행 할 수 있게 된다.
컨테이너는 하이퍼바이저 없이 직접 운영 체제의 커널을 공유하여 가상화하는 기술이다. 컨테이너는 호스트 시스템의 운영 체제 위에서 동작하며, 가상화된 환경에서 애플리케이션을 격리하여 실행한다.
하이퍼바이저는 가상 머신 단위로 리소스를 분할하고 격리시키는 반면, 컨테이너는 운영 체제 수준에서 프로세스를 격리한다. 컨테이너는 가상화된 운영 체제를 생성하지 않고, 호스트 운영 체제의 커널을 공유하여 동작하므로 더 가볍고 빠른 실행 속도를 가진다.
example
Container 기술을 사용해 애플리케이션을 구축, 패키징, 배포, 실행하게 해주는 소프트웨어 플랫폼이다.
Docker Container Platform
도커(Docker) 기술을 기반으로 한 컨테이너화 플랫폼, 이 플랫폼은 애플리케이션을 컨테이너 단위로 패키징하고 배포하며, 컨테이너의 실행과 관리를 위한 도구 및 기능을 제공한다.
Container System 상에서 Application을 쉽게 배포하고 관리할 수 있게 해주는 orchestration management 시스템
배포의 과정
컨테이너 이미지 생성 : 어플리케이션의 컴포넌트를 포함하는 하나 이상의 컨테이너 이미지를 작성한다.
이미지 레지스트리에 푸시 : 생성한 컨테이너 이미지를 이미지 레지스트리에 푸시한다. 이미지 레지스트리는 컨테이너 이미지를 저장하고 공유할 수 있는 중앙 저장소입니다.
쿠버네티스 리소스 생성 : Kubernetes 클러스터 내에서 어플리케이션을 실행하기 위해 쿠버네티스 리소스를 생성한다. 이 리소스는 어플리케이션의 구성을 정의하며, Pods, Deployments, Services, ConfigMaps, Secrets 등과 같은 Kubernetes 오브젝트로 표현된다.
kubectl apply 또는 helm을 사용하여 어플리케이션 배포 : 생성한 쿠버네티스 리소스를 Kubernetes 클러스터에 배포한다. 이를 위해 kubectl apply 명령이나 Helm과 같은 배포 관리 도구를 사용할 수 있다. 이 단계에서 어플리케이션의 구성이 쿠버네티스 API 서버에 전달되고, 쿠버네티스 클러스터는 해당 구성에 따라 어플리케이션을 생성하고 실행한다.