Azure Kubernetes Service로 마이그레이션 (AKS)Migrate to Azure Kubernetes Service (AKS)

이 문서에서는 Azure Kubernetes Service (AKS)로의 성공적인 마이그레이션을 계획 하 고 실행 하는 방법을 설명 합니다.This article helps you plan and execute a successful migration to Azure Kubernetes Service (AKS). 주요 결정을 내리는 데 도움이 되도록이 가이드에서는 AKS에 대 한 현재 권장 구성에 대 한 세부 정보를 제공 합니다.To help you make key decisions, this guide provides details for the current recommended configuration for AKS. 이 문서에서는 모든 시나리오에 대해 설명 하지 않으며, 해당 하는 경우 성공적인 마이그레이션 계획에 대 한 자세한 정보에 대 한 링크가 포함 되어 있습니다.This article doesn't cover every scenario, and where appropriate, the article contains links to more detailed information for planning a successful migration.

이 문서를 사용 하 여 다음 시나리오를 지원할 수 있습니다.This document can be used to help support the following scenarios:

마이그레이션할 때 대상 Kubernetes 버전이 AKS에 대해 지원 되는 창 내에 있는지 확인 합니다.When migrating, ensure your target Kubernetes version is within the supported window for AKS. 이전 버전을 사용 하는 경우 지원 되는 범위 내에 있지 않을 수 있으며 AKS에서 업그레이드 버전을 지원 해야 합니다.If using an older version, it may not be within the supported range and require upgrading versions to be supported by AKS. 자세한 내용은 지원 되는 AKS Kubernetes 버전 을 참조 하세요.See AKS supported Kubernetes versions for more information.

최신 버전의 Kubernetes로 마이그레이션하려는 경우 Kubernetes 버전 및 버전 기울기 지원 정책을검토 하세요.If you're migrating to a newer version of Kubernetes, review Kubernetes version and version skew support policy.

시나리오에 따라 몇 가지 오픈 소스 도구를 사용 하 여 쉽게 마이그레이션할 수 있습니다.Several open-source tools can help with your migration, depending on your scenario:

이 문서에서는 다음에 대 한 마이그레이션 세부 정보를 요약 합니다.In this article we will summarize migration details for:

  • 표준 Load Balancer 및 Virtual Machine Scale Sets AKSAKS with Standard Load Balancer and Virtual Machine Scale Sets
  • 기존에 연결 된 Azure 서비스Existing attached Azure Services
  • 유효한 할당량 확인Ensure valid quotas
  • 고가용성 및 비즈니스 연속성High Availability and business continuity
  • 상태 비저장 응용 프로그램에 대 한 고려 사항Considerations for stateless applications
  • 상태 저장 응용 프로그램에 대 한 고려 사항Considerations for stateful applications
  • 클러스터 구성 배포Deployment of your cluster configuration

표준 Load Balancer 및 Virtual Machine Scale Sets AKSAKS with Standard Load Balancer and Virtual Machine Scale Sets

AKS는 관리 오버 헤드가 낮은 고유한 기능을 제공 하는 관리 되는 서비스입니다.AKS is a managed service offering unique capabilities with lower management overhead. 관리 되는 서비스의 결과로 AKS에서 지 원하는 지역 집합에서 선택 해야 합니다.As a result of being a managed service, you must select from a set of regions which AKS supports. 기존 클러스터에서 AKS로 전환 하는 경우 기존 응용 프로그램이 AKS 관리 되는 제어 평면에서 정상 상태를 유지 하도록 수정 해야 할 수 있습니다.The transition from your existing cluster to AKS may require modifying your existing applications so they remain healthy on the AKS managed control plane.

Virtual Machine Scale SetsAzure 표준 Load Balancer 에 의해 지원 되는 AKS 클러스터를 사용 하는 것이 좋습니다 .이를 통해 여러 노드 풀, 가용성 영역, 권한이 부여 된 IP 범위, 클러스터 Autoscaler, AKS에 대 한 Azure Policy및 다른 새로운 기능이 출시 될 때 이러한 기능을 얻을 수 있습니다.We recommend using AKS clusters backed by Virtual Machine Scale Sets and the Azure Standard Load Balancer to ensure you get features such as multiple node pools, Availability Zones, Authorized IP ranges, Cluster Autoscaler, Azure Policy for AKS, and other new features as they are released.

가상 컴퓨터 가용성 집합 으로 지원 되는 AKS 클러스터는 이러한 기능 중 상당수를 지원 하지 않습니다.AKS clusters backed by Virtual Machine Availability Sets lack support for many of these features.

다음 예제에서는 가상 머신 확장 집합에 의해 지원 되는 단일 노드 풀로 AKS 클러스터를 만듭니다.The following example creates an AKS cluster with single node pool backed by a virtual machine scale set. 표준 부하 분산 장치를 사용 합니다.It uses a standard load balancer. 또한 클러스터의 노드 풀에서 클러스터 자동 크기 조정기를 사용하도록 설정하고 최소 1개 및 최대 3개 노드를 설정합니다.It also enables the cluster autoscaler on the node pool for the cluster and sets a minimum of 1 and maximum of 3 nodes:

# First create a resource group
az group create --name myResourceGroup --location eastus

# Now create the AKS cluster and enable the cluster autoscaler
az aks create \
  --resource-group myResourceGroup \
  --name myAKSCluster \
  --node-count 1 \
  --vm-set-type VirtualMachineScaleSets \
  --load-balancer-sku standard \
  --enable-cluster-autoscaler \
  --min-count 1 \
  --max-count 3

기존에 연결 된 Azure 서비스Existing attached Azure Services

클러스터를 마이그레이션할 때 외부 Azure 서비스를 연결 했을 수 있습니다.When migrating clusters you may have attached external Azure services. 이러한 작업에는 리소스 재작성이 필요 하지 않지만 기능을 유지 하려면 이전 클러스터에서 새 클러스터로의 연결을 업데이트 해야 합니다.These do not require resource recreation, but they will require updating connections from previous to new clusters to maintain functionality.

  • Azure Container RegistryAzure Container Registry
  • Log AnalyticsLog Analytics
  • Application InsightsApplication Insights
  • Traffic ManagerTraffic Manager
  • 스토리지 계정Storage Account
  • 외부 데이터베이스External Databases

유효한 할당량 확인Ensure valid quotas

마이그레이션 중에 추가 가상 머신이 구독에 배포되므로 할당량과 한도가 이러한 리소스에 충분한지 확인해야 합니다.Because additional virtual machines will be deployed into your subscription during migration, you should verify that your quotas and limits are sufficient for these resources. Vcpu 할당량증가를 요청 해야 할 수도 있습니다.You may need to request an increase in vCPU quota.

네트워크 할당량 에 대 한 증가를 요청 하 여 ip가 고갈 되지 않도록 해야 할 수도 있습니다.You may need to request an increase for Network quotas to ensure you don't exhaust IPs. 추가 정보는 AKS에 대 한 네트워킹 및 IP 범위 를 참조 하세요.See networking and IP ranges for AKS for additional information.

자세한 내용은 Azure 구독 및 서비스 제한을 참조 하세요.For more information, see Azure subscription and service limits. 현재 할당량을 확인 하려면 Azure Portal 구독 블레이드로 이동 하 여 구독을 선택한 다음 사용량 + 할당량을 선택 합니다.To check your current quotas, in the Azure portal, go to the subscriptions blade, select your subscription, and then select Usage + quotas.

고가용성 및 비즈니스 연속성High Availability and Business Continuity

응용 프로그램에서 가동 중지 시간을 처리할 수 없는 경우 고가용성 마이그레이션 시나리오에 대 한 모범 사례를 따라야 합니다.If your application cannot handle downtime, you will need to follow best practices for high availability migration scenarios. 복잡 한 비즈니스 연속성 계획, 재해 복구 및 가동 시간 최대화에 대 한 모범 사례는이 문서의 범위를 벗어나는 것입니다.Best practices for complex business continuity planning, disaster recovery, and maximizing uptime are beyond the scope of this document. 자세한 내용은 Azure Kubernetes 서비스 (AKS)에서 비즈니스 연속성 및 재해 복구에 대 한 모범 사례 를 참조 하세요.Read more about Best practices for business continuity and disaster recovery in Azure Kubernetes Service (AKS) to learn more.

복잡한 애플리케이션의 경우 일반적으로 한 번에 마이그레이션되는 것이 아니라 시간이 지남에 따라 마이그레이션됩니다.For complex applications, you'll typically migrate over time rather than all at once. 즉, 이전 환경과 새 환경이 네트워크를 통해 통신 해야 할 수 있습니다.That means that the old and new environments might need to communicate over the network. 이전에 서비스를 사용 하 여 통신 하는 응용 프로그램을 ClusterIP 형식으로 노출 하 LoadBalancer 고 적절 하 게 보호 해야 할 수 있습니다.Applications that previously used ClusterIP services to communicate might need to be exposed as type LoadBalancer and be secured appropriately.

마이그레이션을 완료 하기 위해 클라이언트가 AKS에서 실행 되는 새 서비스를 가리키도록 할 수 있습니다.To complete the migration, you'll want to point clients to the new services that are running on AKS. AKS 클러스터 앞에 있는 Load Balancer를 가리키도록 DNS를 업데이트 하 여 트래픽을 리디렉션하는 것이 좋습니다.We recommend that you redirect traffic by updating DNS to point to the Load Balancer that sits in front of your AKS cluster.

Azure Traffic Manager 는 고객에 게 원하는 Kubernetes 클러스터 및 응용 프로그램 인스턴스로 지시할 수 있습니다.Azure Traffic Manager can direct customers to the desired Kubernetes cluster and application instance. Traffic Manager는 지역 간에 네트워크 트래픽을 분산할 수 있는 DNS 기반 트래픽 부하 분산 장치입니다.Traffic Manager is a DNS-based traffic load balancer that can distribute network traffic across regions. 최상의 성능 및 중복성을 위해 AKS 클러스터로 이동 하기 전에 Traffic Manager를 통해 모든 응용 프로그램 트래픽을 보냅니다.For the best performance and redundancy, direct all application traffic through Traffic Manager before it goes to your AKS cluster. Multicluster 배포에서 고객은 각 AKS 클러스터의 서비스를 가리키는 Traffic Manager DNS 이름에 연결 해야 합니다.In a multicluster deployment, customers should connect to a Traffic Manager DNS name that points to the services on each AKS cluster. Traffic Manager 끝점을 사용 하 여 이러한 서비스를 정의 합니다.Define these services by using Traffic Manager endpoints. 각 끝점은 서비스 부하 분산 장치 IP입니다.Each endpoint is the service load balancer IP. 이 구성을 사용 하 여 한 지역의 Traffic Manager 끝점에서 다른 지역의 끝점으로의 네트워크 트래픽을 보낼 수 있습니다.Use this configuration to direct network traffic from the Traffic Manager endpoint in one region to the endpoint in a different region.

Traffic Manager AKS

Azure Front 도어 서비스 는 AKS 클러스터에 대 한 트래픽을 라우팅하는 또 다른 옵션입니다.Azure Front Door Service is another option for routing traffic for AKS clusters. Azure Front Door Service를 사용하면 최적의 성능과 고가용성을 지원하는 즉시 글로벌 장애 조치(failover)를 최적으로 구현하여 웹 트래픽의 글로벌 라우팅을 정의, 관리, 모니터링할 수 있습니다.Azure Front Door Service enables you to define, manage, and monitor the global routing for your web traffic by optimizing for best performance and instant global failover for high availability.

상태 비저장 응용 프로그램에 대 한 고려 사항Considerations for stateless applications

상태 비저장 애플리케이션 마이그레이션은 가장 간단한 경우입니다.Stateless application migration is the most straightforward case. 리소스 정의 (YAML 또는 투구)를 새 클러스터에 적용 하 고 모든 항목이 예상 대로 작동 하는지 확인 하 고 트래픽을 리디렉션하여 새 클러스터를 활성화 합니다.Apply your resource definitions (YAML or Helm) to the new cluster, make sure everything works as expected, and redirect traffic to activate your new cluster.

상태 저장 응용 프로그램에 대 한 고려 사항Considerations for stateful applications

데이터 손실 또는 예기치 않은 가동 중지 시간을 방지 하기 위해 상태 저장 응용 프로그램의 마이그레이션을 신중 하 게 계획 합니다.Carefully plan your migration of stateful applications to avoid data loss or unexpected downtime.

Azure Files를 사용 하는 경우 파일 공유를 볼륨으로 새 클러스터에 탑재할 수 있습니다.If you use Azure Files, you can mount the file share as a volume into the new cluster:

Azure Managed Disks를 사용 하는 경우 VM에 연결 되지 않은 경우에만 디스크를 탑재할 수 있습니다.If you use Azure Managed Disks, you can only mount the disk if unattached to any VM:

이러한 방법이 작동 하지 않는 경우 백업 및 복원 옵션을 사용할 수 있습니다.If neither of those approaches work, you can use a backup and restore options:

Azure 파일Azure Files

디스크와 달리 Azure Files는 여러 호스트에 동시에 탑재할 수 있습니다.Unlike disks, Azure Files can be mounted to multiple hosts concurrently. AKS 클러스터에서 Azure 및 Kubernetes는 ACS 클러스터가 여전히 사용 하는 pod를 만들 수 있도록 방지 하지 않습니다.In your AKS cluster, Azure and Kubernetes don't prevent you from creating a pod that your ACS cluster still uses. 데이터 손실 및 예기치 않은 동작을 방지 하려면 클러스터가 같은 파일에 동시에 쓰지 않도록 합니다.To prevent data loss and unexpected behavior, ensure that the clusters don't write to the same files at the same time.

응용 프로그램이 동일한 파일 공유를 가리키는 여러 복제본을 호스팅할 수 있는 경우 상태 비저장 마이그레이션 단계를 수행 하 고 새 클러스터에 YAML 정의를 배포 합니다.If your application can host multiple replicas that point to the same file share, follow the stateless migration steps and deploy your YAML definitions to your new cluster. 그렇지 않은 경우 한 가지 가능한 마이그레이션 방법에 다음 단계가 포함됩니다.If not, one possible migration approach involves the following steps:

  • 응용 프로그램이 올바르게 작동 하는지 확인 합니다.Validate your application is working correctly.
  • 새 AKS 클러스터에 대 한 라이브 트래픽을 가리킵니다.Point your live traffic to your new AKS cluster.
  • 이전 클러스터의 연결을 끊습니다.Disconnect the old cluster.

빈 공유로 시작 하 고 원본 데이터의 복사본을 만들려면 az storage file copy 명령을 사용 하 여 데이터를 마이그레이션합니다.If you want to start with an empty share and make a copy of the source data, you can use the az storage file copy commands to migrate your data.

영구적 볼륨 마이그레이션Migrating persistent volumes

기존 영구 볼륨을 AKS로 마이그레이션하는 경우 일반적으로 다음 단계를 수행 합니다.If you're migrating existing persistent volumes to AKS, you'll generally follow these steps:

  • 응용 프로그램에 쓰기를 정지 합니다.Quiesce writes to the application. (이 단계는 선택 사항이 며 가동 중지 시간이 필요 합니다.)(This step is optional and requires downtime.)
  • 디스크의 스냅숏을 생성 합니다.Take snapshots of the disks.
  • 스냅숏에서 새 관리 디스크를 만듭니다.Create new managed disks from the snapshots.
  • AKS에서 영구적 볼륨을 만듭니다.Create persistent volumes in AKS.
  • PersistentVolumeClaims (정적 프로 비전)가 아닌 기존 볼륨을 사용 하도록 pod 사양을 업데이트 합니다.Update pod specifications to use existing volumes rather than PersistentVolumeClaims (static provisioning).
  • 응용 프로그램을 AKS에 배포 합니다.Deploy your application to AKS.
  • 응용 프로그램이 올바르게 작동 하는지 확인 합니다.Validate your application is working correctly.
  • 새 AKS 클러스터에 대 한 라이브 트래픽을 가리킵니다.Point your live traffic to your new AKS cluster.

중요

쓰기를 정지 하지 않도록 선택 하는 경우 새 배포에 데이터를 복제 해야 합니다.If you choose not to quiesce writes, you'll need to replicate data to the new deployment. 그렇지 않으면 디스크 스냅숏을 만든 후 작성 된 데이터를 놓치지 않습니다.Otherwise you'll miss the data that was written after you took the disk snapshots.

일부 오픈 소스 도구는 관리 디스크를 만들고 Kubernetes 클러스터 간에 볼륨을 마이그레이션하는 데 도움이 될 수 있습니다.Some open-source tools can help you create managed disks and migrate volumes between Kubernetes clusters:

클러스터 구성 배포Deployment of your cluster configuration

기존 CI (지속적인 통합) 및 CD (지속적인 배달) 파이프라인을 사용 하 여 AKS에 알려진 양호한 구성을 배포 하는 것이 좋습니다.We recommend that you use your existing Continuous Integration (CI) and Continuous Deliver (CD) pipeline to deploy a known-good configuration to AKS. Azure Pipelines를 사용 하 여 응용 프로그램을 빌드하고 응용 프로그램을 AKS에 배포할수 있습니다.You can use Azure Pipelines to build and deploy your applications to AKS. 기존 배포 작업을 복제 하 고이 kubeconfig 새 AKS 클러스터를 가리키는지 확인 합니다.Clone your existing deployment tasks and ensure that kubeconfig points to the new AKS cluster.

가능 하지 않은 경우 기존 Kubernetes 클러스터에서 리소스 정의를 내보낸 다음 AKS에 적용 합니다.If that's not possible, export resource definitions from your existing Kubernetes cluster and then apply them to AKS. kubectl을 사용하여 개체를 내보낼 수 있습니다.You can use kubectl to export objects.

kubectl get deployment -o=yaml --export > deployments.yaml

기존 리소스를 다른 영역으로 이동Moving existing resources to another region

AKS 클러스터를 AKS에서 지 원하는 다른 지역으로 이동 하는 것이 좋습니다.You may want to move your AKS cluster to a different region supported by AKS. 다른 지역에 새 클러스터를 만든 다음 리소스 및 응용 프로그램을 새 클러스터에 배포 하는 것이 좋습니다.We recommend that you create a new cluster in the other region then deploy your resources and applications to your new cluster. 또한 AKS 클러스터에서 실행 중인 Azure Dev Spaces 와 같은 서비스가 있는 경우 해당 서비스를 새 지역의 클러스터에 설치 하 고 구성 해야 합니다.In addition, if you have any services such as Azure Dev Spaces running on your AKS cluster, you will also need to install and configure those services on your cluster in the new region.

이 문서에서는 다음에 대 한 마이그레이션 세부 정보를 요약 했습니다.In this article we summarized migration details for:

  • 표준 Load Balancer 및 Virtual Machine Scale Sets AKSAKS with Standard Load Balancer and Virtual Machine Scale Sets
  • 기존에 연결 된 Azure 서비스Existing attached Azure Services
  • 유효한 할당량 확인Ensure valid quotas
  • 고가용성 및 비즈니스 연속성High Availability and business continuity
  • 상태 비저장 응용 프로그램에 대 한 고려 사항Considerations for stateless applications
  • 상태 저장 응용 프로그램에 대 한 고려 사항Considerations for stateful applications
  • 클러스터 구성 배포Deployment of your cluster configuration