Trace Id is missing
주 콘텐츠로 건너뛰기

Kubernetes란 무엇인가요?

Kubernetes는 컨테이너를 배포, 관리 및 크기 조정하기 위한 오픈 소스 오케스트레이션 소프트웨어입니다.

Kubernetes 설명


최신 애플리케이션은 종속성과 구성으로 패키징된 마이크로서비스인 컨테이너를 사용하여 빌드되는 경우가 점점 늘어나고 있습니다. Kubernetes(“koo-ber-net-ees”로 발음)는 대규모로 컨테이너를 배포 및 관리할 수 있는 오픈 소스 소프트웨어이며, 배의 조타수 또는 파일럿을 의미하는 그리스어 단어이기도 합니다. “k8s” 또는 “k-eights”라고도 하는 Kubernetes를 사용하여 컨테이너화된 앱을 더 빠르게 빌드, 제공 및 크기 조정할 수 있습니다.

Kubernetes 작동 방법

애플리케이션이 여러 서버에 걸쳐 배포된 여러 컨테이너를 포괄하도록 성장함에 따라 운영이 더 복잡해지게 됩니다. 이러한 복잡성을 관리하기 위해 Kubernetes는 해당 컨테이너가 실행할 방법과 위치를 제어하는 오픈 소스 API를 제공합니다.

Kubernetes는 가상 머신 클러스터를 오케스트레이션하고 사용 가능한 컴퓨팅 리소스와 각 컨테이너의 리소스 요구 사항을 기반으로 해당 가상 머신에서 실행할 컨테이너를 예약합니다. 컨테이너는 Kubernetes의 기본 작업 단위인 Pod로 그룹화되고, 해당 Pod는 원하는 상태로 확장됩니다.

또한 Kubernetes는 자동으로 서비스 검색을 관리하고, 부하 분산을 통합하고, 리소스 할당을 추적하고, 컴퓨팅 사용률을 기반으로 크기 조정합니다. 또한 개별 리소스의 상태를 확인하고 컨테이너를 자동으로 다시 시작하거나 복제하여 앱이 자동 복구될 수 있게 합니다.

Kubernetes 작동 방법 보기
Kubernetes 작동 방법 보기
탭으로 돌아가기

Kubernetes를 사용하는 이유

컨테이너화된 앱을 안정적으로 실행하기는 어려울 수 있는데, 여러 머신에 배포된 많은 컨테이너가 관련되기 때문입니다. Kubernetes는 이 컨테이너를 예약하고 배포할 뿐만 아니라 원하는 상태로 크기 조정하고 수명 주기를 관리하는 방법을 제공합니다. Kubernetes를 사용하여 확장성(scalability) 및 확장성(extensibility) 있는 이식 가능한 방식으로 컨테이너 기반 애플리케이션을 구현할 수 있습니다.

워크로드를 이식 가능하게 만들기

컨테이너 앱은 인프라와는 별개이므로 Kubernetes에서 컨테이너 앱을 실행하면 이식 가능해집니다. 환경 간에 일관성을 유지하면서도 온-프레미스, 하이브리드 및 다중 클라우드 환경 간에 로컬 머신에서 프로덕션 환경으로 컨테이너 앱을 이동할 수 있습니다.

컨테이너 크기를 손쉽게 조정

Kubernetes를 사용하여 복잡한 컨테이너화된 애플리케이션을 정의한 후 서버 클러스터 또는 심지어 여러 클러스터에 걸쳐 배포할 수 있습니다. Kubernetes는 원하는 상태에 따라 애플리케이션 크기를 조정하므로 컨테이너 상태를 자동으로 모니터링하고 유지 관리합니다.

확장성이 강화된 앱 빌드

여러 개발자 및 회사로 구성된 대규모 오픈 소스 커뮤니티는 보안, 모니터링, 관리 등의 기능을 Kubernetes에 추가하는 확장 및 플러그 인을 적극적으로 빌드합니다. 또한 Certified Kubernetes Conformance 프로그램에서는 이러한 커뮤니티 제품을 더 쉽게 사용할 수 있게 해주는 API를 지원하도록 모든 Kubernetes 버전에 요구합니다.

Kubernetes 시작

컨테이너화된 애플리케이션의 배포 및 관리를 시작하는 방법을 확인하세요.

학습 경로 따라하기

Kubernetes를 시작 및 실행하기 위한 실용적인 기술을 배웁니다.

완전한 Kubernetes 플랫폼에서 빌드

Kubernetes 자체는 이식성, 확장성(scalability) 및 확장성(extensibility)을 제공하고, 엔드투엔드 개발, 운영 및 보안 제어를 추가하면 보안이나 안정성이 손상되는 일 없이 업데이트를 더 빠르게 배포하고 인프라 관리에 드는 시간을 절약할 수 있습니다. Kubernetes를 채택하는 경우 다음도 구현하는 것이 좋습니다.

  • 프로비저닝, 패치 및 업그레이드와 같은 일상적인 작업을 제거하는 인프라 자동화 또는 서버리스 Kubernetes.

  • 컨테이너화된 앱 개발, CI/CD(지속적인 통합 및 지속적인 배포) 워크플로를 위한 도구

  • 보안, 거버넌스, ID 및 액세스를 관리하기 위한 서비스.

DevOps 방식으로 Kubernetes 이용

Kubernetes 앱이 성장함에 따라(컨테이너, 환경 및 팀 추가) 릴리스 빈도가 증가하는 경향을 보이며 개발 및 운영 복잡성도 함께 증가하는 경향을 보입니다. Kubernetes 환경에서 DevOps 방식을 사용하면 보안이 강화된 상태로 대규모로 빠르게 이동할 수 있습니다.

CI/CD를 사용하여 코드를 더 빠르게 제공

컨테이너가 개발 팀과 운영 팀 간의 협업을 쉽게 해주는 일관된 애플리케이션 패키징 형식을 제공하지만 CI/CD는 해당 작업을 자동화하여 코드에서 컨테이너 및 Kubernetes 클러스터로 이동을 몇 분 단위로 가속화할 수 있습니다.

코드 인프라를 사용하여 효과적으로 리소스 관리

IaC(infrastructure as code)는 팀 간에 컴퓨팅 리소스의 일관성과 가시성을 설정하여 사용자 오류의 가능성을 줄여줍니다. 이 방식은 Helm 기반 Kubernetes 애플리케이션의 선언적 특성과 작동합니다. 둘을 결합하면 앱, 리소스 및 구성을 신뢰성 있고 추적 가능하고 반복 가능한 방법으로 정의할 수 있습니다.

지속적 모니터링으로 피드백 루프 가속화

컨테이너 상태 모니터링에서 중앙 집중화된 로깅에 이르기까지 리소스, 클러스터, Kubernetes API, 컨테이너 및 코드의 전체 보기를 통해 버그 발생 후 수정까지의 시간을 줄일 수 있습니다. 해당 보기는 리소스 병목 상태를 방지하고 악성 요청을 추적하고 Kubernetes 애플리케이션을 정상 상태로 유지하는 데 도움이 됩니다.

DevOps를 사용하여 속도와 보안의 균형 유지

개발속도가 저하되는 일 없이 실시간 가시성을 DevOps 워크플로에 적용합니다. 규정 준수 확인 및 재구성을 자동으로 적용하여 빌드 및 파이프라인을 보호하고 그 결과로 Kubernetes 애플리케이션을 보호합니다.

Kubernetes를 사용하여 흐름 인포그래픽 DevOps 워크플로 처리

Kubernetes를 사용한 DevOps 워크플로의 예

  1. 동일한 Kubernetes 클러스터에서 애플리케이션의 서로 다른 부분을 함께 빠르게 반복, 테스트 및 디버그합니다.

  2. 지속적인 통합을 위해 코드를 GitHub 리포지토리에 통합하고 확인합니다. 그런 다음, 지속적인 업데이트의 일부로 자동화된 빌드 및 테스트를 실행합니다.

  3. 컨테이너 이미지의 원본 공급자 및 무결성을 확인합니다. 이미지를 검사에 합격할 때까지 격리된 상태로 유지합니다.

  4. Terraform과 같은 도구를 사용하여 Kubernetes 클러스터를 프로비저닝합니다. Terraform이 설치한 Helm 차트에서 앱 리소스와 구성을 원하는 상태로 정의합니다.

  5. 배포를 관리하는 정책을 Kubernetes 클러스터에 적용합니다.

  6. 릴리스 파이프라인은 각 코드에 대해 미리 정의된 배포 전략을 자동으로 실행합니다.

  7. 정책 감사 및 자동 업데이트 관리를 CI/CD 파이프라인에 추가합니다. 예를 들어 릴리스 파이프라인만이 사용자의 Kubernetes 환경에서 새 Pod를 만들 권한이 있습니다.

  8. 앱 원격 분석, 컨테이너 상태 모니터링 및 실시간 로그 분석을 사용하도록 설정합니다.

  9. 인사이트를 사용하여 문제를 해결하고 다음 스프린트에 대한 계획을 알립니다.

Azure를 통해 Kubernetes의 장점 활용

완전 관리형 Microsoft AKS(Azure Kubernetes Service)를 사용하여 프로비전, 업그레이드, 모니터링 및 크기 조정을 자동화합니다. 서버리스 Kubernetes, 더 간단한 개발과 프로덕션 간 환경 및 엔터프라이즈급 보안과 거버넌스를 이용합니다.

Kubernetes 커뮤니티에서 영감과 혁신 끌어내기

Kubernetes는 수천 명의 개인과 수백 개의 조직이 지혜, 코드 및 코드 사용자에 대한 지속적인 지원을 통해 만들어졌으며 그래서 널리 사용됩니다. 그들의 열정적인 기여를 바탕으로 성공적인 소프트웨어를 빌드해 보세요.

35,000

참가자

180,000

커밋

최고 프로젝트

GitHub에서 수행

Kubernetes에 대한 Microsoft 기여

Process Flow Infographic Microsoft contributions to Kubernetes

엔터프라이즈에 오픈 소스 독창성 적용

조직에서 더 쉽게 Kubernetes를 채택하고 개발자가 더 쉽게 Kubernetes를 사용할 수 있도록 Microsoft는 단 3년 만에 오픈 소스 프로젝트에 참여하는 직원 수를 3배로 늘렸습니다. 이제 세 번째로 많은 기여를 하는 기업인 Microsoft는 다양한 고객과 협력하며 얻은 최신 정보 및 모범 사례를 Kubernetes 커뮤니티에 도입하여 좀 더 접근성이 좋고 엔터프라이즈에 적합한 Kubernetes를 만들기 위해 최선을 다하고 있습니다.

FAQ – Kubernetes

  •  이 큐레이팅 여정을 따라 Kubernetes 학습을 시작해 보세요.

  • Kubernetes는 클라우드로 애플리케이션 이동에서 기계 학습과 AI의 어려운 과제 단순화에 이르기까지 다양한 시나리오에서 유용합니다.

    주요 사용 사례는 다음과 같습니다.

    클라우드로 기존 애플리케이션 마이그레이션

    마이크로서비스 기반 애플리케이션의 배포 및 관리 단순화

    쉽게 크기 조정

    IoT 디바이스 배포 및 관리

    기계 학습

  • Kubernetes를 사용하는 수천 명의 기술 전문가와 파트너가 만든 모범 사례 및 아키텍처 패턴을 참조하세요.

  • Kubernetes 배포를 사용하면 원하는 애플리케이션 배포 상태를 설명할 수 있습니다. Kubernetes 스케줄러는 실제 상태가 원하는 상태와 일치하는지 확인하고 하나 이상의 Pod 충돌이 발생할 경우 해당 상태를 유지 관리합니다. 또한 Kubernetes 배포를 사용하면 가동 중단 시간 없이 애플리케이션을 일관되게 업그레이드할 수 있습니다.

  • 일반적으로 DevOps를 사용하여 Kubernetes에 배포하려면 버전 관리를 위해 Git와 같은 리포지토리가 필요합니다. 리포지토리는 CI/CD 라인의 시작 역할을 합니다. 사용하는 방식에 따라 리포지토리에 변화가 있으면 통합, 빌드, 제공 및 배포 작업이 시작됩니다.

  • Kubernetes와 Docker는 함께 작동합니다.

    Docker는 컨테이너화 애플리케이션을 패키징 및 배포하기 위한 개방형 표준을 제공합니다. Docker를 사용하면 컨테이너를 빌드 및 실행하고 컨테이너 이미지를 저장 및 공유할 수 있습니다.

    Kubernetes는 Docker가 생성하는 분산형 컨테이너화 애플리케이션을 오케스트레이션 및 관리합니다. 또한 머신 클러스터에서 해당 애플리케이션을 배포하고 실행하는 데 필요한 인프라를 제공합니다.

준비가 되면 Azure에서 Kubernetes를 체험해 보세요. 

무료 체험 시작