Kubernetes 및 Docker

함께 사용하면 더 좋은 컨테이너 기술을 통해 보다 빠르게 앱을 빌드, 제공 및 확장하세요.

Kubernetes 및 Docker 질문

Kubernetes와 Docker에 대한 대화는 종종 ‘Kubernetes를 사용해야 하나요?’ 아니면 ‘Docker를 사용해야 하나요?’와 같은 양자택일 형식으로 표현됩니다. 즉, 사과를 사과 파이와 비교하는 것과 유사합니다. 둘 중 하나를 선택해야 한다는 것은 흔히 있는 오해입니다.

Kubernetes와 Docker의 차이점은 “둘 다” 질문으로 표현될 때 훨씬 더 쉽게 이해할 수 있습니다. 실제로 선택할 필요가 없습니다. Kubernetes와 Docker는 컨테이너화된 앱을 빌드, 제공 및 확장하기 위해 함께 잘 사용되는, 기본적으로 다른 기술입니다.

Docker 및 컨테이너화의 증가

Docker는 클라우드 또는 온-프레미스에서 실행될 수 있는 이식 가능한 일체형 컨테이너로 애플리케이션 배포를 자동화하기 위한 오픈 소스 기술이자 컨테이너 파일 형식입니다. Docker, Inc.는 이름은 유사하지만 Microsoft와 같은 클라우드 공급 기업과 협업하여 Linux 및 Windows에서 실행할 오픈 소스 Docker 기술을 개발하는 회사 중 하나입니다.

환경을 격리한다는 아이디어는 새롭지 않고 다른 유형의 컨테이너화 소프트웨어가 있지만 Docker는 최근 몇 년간 기본 컨테이너 형식으로 성장해 왔습니다. Docker에는 런타임 환경인 Docker Engine이 있습니다. 따라서 모든 개발 머신에서 컨테이너를 빌드하고 실행한 다음, Docker Hub 또는 Azure Container Registry 같은 컨테이너 레지스트리를 통해 컨테이너 이미지를 저장하거나 공유할 수 있습니다.

애플리케이션이 여러 서버에 걸쳐 배포된 여러 컨테이너를 포괄하도록 성장함에 따라 운영이 더 복잡해지게 됩니다. Docker는 컨테이너화된 앱을 패키징 및 배포하기 위한 개방형 표준을 제공하지만 잠재적인 복잡성이 빠르게 추가될 수 있습니다. Kubernetes를 사용하여 수많은 컨테이너의 조정 및 예약, 서로 다른 모든 앱 컨테이너의 상호 통신, 수많은 컨테이너 인스턴스의 확장 등 다양한 작업을 수행할 수 있습니다.

Kubernetes 및 컨테이너 오케스트레이션

Kubernetes는 오픈 소스 오케스트레이션 소프트웨어로, 컨테이너 실행 방법 및 위치를 제어하는 API를 제공합니다. 따라서 Docker 컨테이너와 워크로드를 실행할 수 있으며 여러 서버에 배포된 여러 컨테이너를 확장할 때 운영상의 복잡성을 해결하는 데 도움이 됩니다.

Kubernetes를 통해 가상 머신 클러스터를 오케스트레이션하고 사용 가능한 컴퓨팅 리소스와 각 컨테이너의 리소스 요구 사항을 기반으로 가상 머신에서 실행하는 컨테이너 스케줄을 설정합니다. 컨테이너는 Kubernetes용 기본 운영 단위인 Pod로 그룹화됩니다. 해당 컨테이너와 Pod를 원하는 상태로 크기 조정하고 앱을 시작하여 실행을 유지하도록 이들의 수명 주기를 관리할 수 있습니다.

Kubernetes와 Docker의 차이점은 무엇인가요?

일반적으로 Kubernetes와 Docker를 비교하지만 보다 적절한 비교는 Kubernetes와 Docker Swarm을 비교하는 것입니다. Docker Swarm은 Docker 컨테이너의 클러스터링에 중점을 둔 Docker의 오케스트레이션 기술로, Docker 에코시스템과 긴밀하게 통합되고 고유한 API를 사용합니다.

Kubernetes와 Docker의 기본적인 차이점은 Kubernetes는 전체 클러스터에서 실행되지만 Docker는 단일 노드에서 실행된다는 점입니다. Kubernetes는 Docker Swarm보다 광범위하고 효율적인 방식으로 프로덕션 환경에서 대규모로 노드의 클러스터를 조정하기 위한 것입니다. Kubernetes 에코시스템에 하나 이상의 컨테이너를 포함할 수 있는 예약 단위인 Kubernetes pod는 전체 노드에 분산되어 고가용성을 제공합니다.

함께 사용하면 더 좋은 Kubernetes와 Docker

컨테이너는 한 번 코딩하고 어디서나 실행되도록 보장하지만 Kubernetes는 단일 제어 영역에서 모든 컨테이너 리소스를 오케스트레이션하고 관리할 수 있는 잠재력을 제공합니다. 따라서 컨테이너가 실행되는 모든 Kubernetes 노드에서 네트워킹, 부하 분산, 보안 및 크기 조정을 지원합니다. 또한 Kubernetes에는 액세스 권한, 스테이징 환경 등으로 컨테이너 리소스를 그룹화할 수 있는 네임스페이스 같은 격리 메커니즘이 기본 제공됩니다. 이러한 구성을 통해 IT는 셀프 서비스 리소스 액세스를 보다 쉽게 제공할 수 있으며 개발자는 개발 환경에서 전체 애플리케이션 모형을 만들지 않고도 가장 복잡한 마이크로 서비스 아키텍처에서도 수월하게 협업할 수 있습니다. DevOps 방식을 컨테이너 및 Kubernetes와 결합하면 클라우드 네이티브 애플리케이션의 확장성 있는 오케스트레이션 및 신속한 제공을 촉진하는 마이크로 서비스 아키텍처의 기준을 사용할 수 있습니다.

간단히 말해 Docker와 Kubernetes를 사용하여 다음을 수행할 수 있습니다.

  • 인프라를 더욱 강력하게 하고 앱의 가용성을 더 높입니다. 일부 노드가 오프라인 상태가 되어도 앱은 온라인 상태로 유지됩니다.
  • 애플리케이션의 확장성을 향상합니다. 앱이 훨씬 더 많은 부하를 받기 시작하여 더 나은 사용자 환경을 제공할 수 있도록 확장해야 하는 경우 간단하게 더 많은 컨테이너를 실행하거나 Kubernetes 클러스터에 더 많은 노드를 추가하면 됩니다.

Kubernetes와 Docker는 함께 작동합니다. Docker는 컨테이너화 애플리케이션을 패키징 및 배포하기 위한 개방형 표준을 제공합니다. Docker를 사용하면 컨테이너를 빌드 및 실행하고 컨테이너 이미지를 저장 및 공유할 수 있습니다. Kubernetes 클러스터에서 Docker 빌드를 쉽게 실행할 수 있지만 Kubernetes 자체는 완벽한 솔루션이 아닙니다. 프로덕션 환경에서 Kubernetes를 최적화하려면 추가 도구 및 서비스를 구현하여 CI/CD(연속 통합/지속적인 배포) 워크플로 및 기타 DevOps 방식과 함께 보안, 거버넌스, ID 및 액세스를 관리합니다.

프로덕션 환경의 Kubernetes 및 Docker 솔루션 아키텍처

Simplify the deployment and management of Microservices based applicationsSimplify the deployment and management of Microservices based applications12345567778
  1. 개요
  2. 흐름

개요

AKS를 사용하여 마이크로 서비스 기반 아키텍처의 배포 및 관리를 단순화하세요. AKS는 수평적 크기 조정, 자동 복구, 부하 분산, 비밀 관리를 간소화합니다.

흐름

  1. 1 개발자가 Visual Studio와 같은 IDE를 사용하여 GitHub에 변경 내용을 커밋함
  2. 2 GitHub가 Azure DevOps에서 새 빌드를 트리거함
  3. 3 Azure DevOps가 마이크로 서비스를 컨테이너로 패키지하고 Azure Container Registry에 푸시함
  4. 4 컨테이너가 AKS 클러스터에 배포됨
  5. 5 사용자가 앱 및 웹 사이트를 통해 서비스에 액세스함
  6. 6 Azure Active Directory가 리소스에 대한 액세스를 보호하는 데 사용됨
  7. 7 마이크로 서비스가 데이터베이스를 사용하여 정보를 저장 및 검색함
  8. 8 관리자가 별도의 관리 포털을 통해 액세스함
Secure DevOps for AKSDevOps and Kubernetes are better together. Implementing secure DevOps together with Kubernetes on Azure, you can achieve the balance between speed and security and deliver code faster at scale. Put guardrails around the development processes using CI/CD with dynamic policy controls and accelerate feedback loop with constant monitoring. Use Azure Pipelines to deliver fast while ensuring enforcement of critical policies with Azure Policy. Azure provides you real-time observability for your build and release pipelines, and the ability to apply compliance audit and reconfigurations easily.123456789
  1. 개요
  2. 흐름

개요

DevOps와 Kubernetes를 함께 사용하면 더 좋습니다. Azure에서 Kubernetes와 함께 보안 DevOps를 구현하면 속도와 보안을 균형 있게 적용하고 코드를 대규모로 더 빠르게 제공할 수 있습니다. 동적 정책 컨트롤이 포함된 CI/CD를 사용하여 개발 프로세스에 보호책을 적용하고 지속적인 모니터링으로 피드백 루프를 가속화합니다. Azure Policy를 통해 중요한 정책을 적용하면서 Azure Pipelines를 사용하여 빠르게 제공합니다. Azure는 빌드 및 릴리스 파이프라인에 대한 실시간 가시성과 규정 준수 감사 및 재구성을 쉽게 적용하는 기능을 제공합니다.

흐름

  1. 1 개발자들이 같은 Kubernetes 클러스터에서 애플리케이션의 서로 다른 부분을 함께 빠르게 반복, 테스트 및 디버그함
  2. 2 코드가 GitHub 리포지토리에 병합되고, 그 후 Azure Pipelines에 의해 자동화된 빌드 및 테스트가 실행됨
  3. 3 컨테이너 이미지가 Azure Container Registry에 등록됨
  4. 4 Kubernetes 클러스터가 Terraform 같은 도구를 통해 프로비저닝되고, Terraform이 설치한 Helm 차트에서 앱 리소스와 구성의 필요한 상태를 정의함
  5. 5 운영자가 배포를 관리하는 정책을 AKS 클러스터에 적용함
  6. 6 릴리스 파이프라인이 각 코드 변경으로 미리 정의된 배포 전략을 자동으로 실행함
  7. 7 Azure Policy를 통해 정책 적용 및 감사가 CI/CD 파이프라인에 추가됨
  8. 8 Azure Monitor를 통해 앱 원격 분석, 컨테이너 상태 모니터링 및 실시간 로그 분석을 가져옴
  9. 9 문제를 해결하는 데 인사이트가 사용되고 다음 스프린트 플랜에 피드됨

Azure를 통해 Kubernetes의 장점 활용

AKS(Azure Kubernetes Service)를 사용하면 컨테이너화된 애플리케이션의 배포와 관리가 수월합니다. AKS는 서버리스 Kubernetes, 통합된 CI/CD 환경, 엔터프라이즈급 보안과 거버넌스를 제공합니다. 배포 팀과 운영 팀을 단일 플랫폼에 통합하여 애플리케이션을 신속하게 빌드 및 제공하고 자신 있게 확장하세요.

Kubernetes 및 Docker 시작