쿠버네티스는 컨테이너화된 애플리케이션을 관리하기 위한 오픈소스 플랫폼입니다. 이식성과 확장성을 제공하며 선언적 구성과 자동화를 통해 복잡한 분산 시스템을 효율적으로 운영할 수 있게 해줍니다.
쿠버네티스라는 이름은 그리스어로 키잡이나 파일럿을 의미합니다. K8s는 Kubernetes의 K와 s 사이에 있는 8개의 글자를 줄여서 표현한 것입니다. 2014년에 구글이 쿠버네티스를 오픈소스로 공개했으며 구글의 15년 이상의 프로덕션 운영 경험과 커뮤니티의 적용 사례를 결합해 발전했습니다.
초기에는 애플리케이션이 물리 서버에서 직접 실행되었으나 리소스 할당 문제와 확장성의 한계가 있었습니다.
가상화 기술이 도입되면서 하나의 물리 서버에서 여러 가상 머신을 실행할 수 있게 되어 리소스 활용도와 확장성이 개선되었습니다.
컨테이너는 가상 머신보다 경량화된 형태로 운영체제를 공유하면서도 애플리케이션을 격리할 수 있습니다. 이를 통해 애플리케이션의 이식성과 효율성이 크게 향상되었습니다.
서비스 디스커버리와 로드 밸런싱: 컨테이너를 DNS 이름이나 IP 주소로 노출하고, 트래픽을 로드 밸런싱하여 안정성을 보장합니다.
스토리지 오케스트레이션: 로컬 스토리지나 클라우드 스토리지를 자동으로 연결하여 사용할 수 있습니다.
자동화된 롤아웃과 롤백: 애플리케이션의 배포와 업데이트를 자동화하여, 원하는 상태를 유지합니다.
빈 패킹: 노드의 리소스를 최적화하여 컨테이너를 효율적으로 배치합니다.
자동화된 복구: 실패한 컨테이너를 자동으로 재시작하고, 필요 시 교체합니다.
시크릿과 구성 관리: 중요한 정보를 안전하게 저장하고, 애플리케이션에 노출되지 않도록 관리합니다.
쿠버네티스는 전통적인 Platform as a Service(PaaS)가 아닙니다. 애플리케이션의 유형을 제한하지 않으며, 소스 코드 배포나 애플리케이션 빌드를 처리하지 않습니다. 또한, 로깅, 모니터링, 경보 시스템을 기본적으로 제공하지 않습니다. 대신, 쿠버네티스는 유연한 구성 요소를 제공하여 필요한 기능을 선택적으로 추가할 수 있도록 합니다.
쿠버네티스는 복잡한 분산 시스템을 관리하기 위한 강력한 도구입니다. 애플리케이션의 배포, 확장, 복구를 자동화하여, 보다 견고하고 확장 가능한 시스템을 구축할 수 있게 해줍니다. 다양한 워크로드를 지원하며, 클라우드 환경에서 효율적으로 운영할 수 있습니다.