다음을 통해 공유


IP 주소 계획 요구 사항

적용 대상: Azure Local, 버전 23H2

Azure Arc에서 사용하도록 설정된 AKS에 대한 IP 주소 계획에는 애플리케이션, 노드 풀, Pod 네트워크, 서비스 통신 및 외부 액세스를 지원하는 네트워크를 설계하는 작업이 포함됩니다. 이 문서에서는 효과적인 IP 주소 계획에 대한 몇 가지 주요 고려 사항과 프로덕션 환경에서 AKS를 배포하는 데 필요한 최소 IP 주소 수를 안내합니다. 이 문서를 읽기 전에 AKS 네트워킹 개념 및 요구 사항을 참조하세요.

Kubernetes 클러스터 및 애플리케이션에 대한 간단한 IP 주소 계획

다음 시나리오 연습에서는 Kubernetes 클러스터 및 서비스에 대한 단일 네트워크에서 IP 주소를 예약합니다. 이 예제는 IP 주소 할당에 대한 가장 간단하고 간단한 시나리오입니다.

IP 주소 요구 사항 IP 주소의 최소 수 이 예약 방법 및 위치
AKS Arc VM IP Kubernetes 클러스터의 모든 작업자 노드에 대해 하나의 IP 주소를 예약합니다. 예를 들어 각 노드 풀에 노드가 3개 있는 3개의 노드 풀을 만들려면 IP 풀에 9개의 IP 주소가 필요합니다. Arc VM 논리 네트워크의 IP 풀을 통해 IP 주소를 예약합니다.
AKS Arc K8s 버전 업그레이드 IP AKS Arc는 롤링 업그레이드를 수행하므로 Kubernetes 버전 업그레이드 작업을 위해 모든 AKS Arc 클러스터에 대해 하나의 IP 주소를 예약합니다. Arc VM 논리 네트워크의 IP 풀을 통해 IP 주소를 예약합니다.
컨트롤 플레인 IP 사용자 환경의 모든 Kubernetes 클러스터에 대해 하나의 IP 주소를 예약합니다. 예를 들어 총 5개의 클러스터를 만들려면 각 Kubernetes 클러스터에 대해 하나씩 5개의 IP 주소를 예약합니다. Arc VM 논리 네트워크의 IP 풀을 통해 IP 주소를 예약합니다.
부하 분산 장치 IP 예약된 IP 주소 수는 애플리케이션 배포 모델에 따라 달라집니다. 시작점으로 모든 Kubernetes 서비스에 대해 하나의 IP 주소를 예약할 수 있습니다. Arc VM 논리 네트워크와 동일한 서브넷에 있지만 IP 풀 외부에 있는 IP 주소를 예약합니다.

Kubernetes 클러스터 및 애플리케이션에 대한 IP 주소 예약에 대한 예제 연습

Jane은 Azure Arc에서 사용하도록 설정된 AKS부터 시작하는 IT 관리자입니다. Jane은 Azure 로컬 클러스터에 Kubernetes 클러스터 A와 Kubernetes 클러스터 B라는 두 개의 Kubernetes 클러스터를 배포하려고 합니다. 또한 Jane은 클러스터 A를 기반으로 투표 애플리케이션을 실행하려고 합니다. 이 애플리케이션에는 두 클러스터에서 실행되는 프런트 엔드 UI의 인스턴스 3개와 백 엔드 데이터베이스의 인스턴스 1개가 있습니다. 모든 AKS 클러스터 및 서비스는 단일 서브넷을 사용하여 단일 네트워크에서 실행됩니다.

  • Kubernetes 클러스터 A에는 3개의 컨트롤 플레인 노드와 5개의 작업자 노드가 있습니다.
  • Kubernetes 클러스터 B에는 1개의 컨트롤 플레인 노드와 3개의 작업자 노드가 있습니다.
  • 프런트 엔드 UI의 인스턴스 3개(포트 443).
  • 백 엔드 데이터베이스의 인스턴스 1개(포트 80).

이전 표에 따라 Jane은 Jane의 서브넷에 총 19개의 IP 주소를 예약해야 합니다.

  • 클러스터 A의 AKS Arc 노드 VM에 대한 8개의 IP 주소(K8s 노드 VM당 하나의 IP).
  • 클러스터 B의 AKS Arc 노드 VM에 대한 4개의 IP 주소(K8s 노드 VM당 하나의 IP).
  • AKS Arc 업그레이드 작업을 실행하기 위한 2개의 IP 주소(AKS Arc 클러스터당 하나의 IP 주소).
  • AKS Arc 컨트롤 플레인의 IP 주소 2개(AKS Arc 클러스터당 하나의 IP 주소)
  • Kubernetes 서비스에 대한 IP 주소 3개(프런트 엔드 UI 인스턴스당 하나의 IP 주소, 모두 동일한 포트를 사용하므로) 백 엔드 데이터베이스는 다른 포트를 사용하는 한 세 IP 주소 중 하나를 사용할 수 있습니다.)

이 예제를 계속 진행하여 다음 표에 추가하면 다음을 확인할 수 있습니다.

매개 변수 IP 주소 수 이 예약 방법 및 위치
AKS Arc VM, K8s 버전 업그레이드 및 컨트롤 플레인 IP 16개의 IP 주소 예약 Azure 로컬 논리 네트워크의 IP 풀을 통해 이 예약을 수행합니다.
부하 분산 장치 IP Jane의 투표 애플리케이션에 대한 Kubernetes 서비스의 IP 주소 3개. 이러한 IP 주소는 클러스터 A에 부하 분산 장치를 설치할 때 사용됩니다. MetalLB Arc 확장을 사용하거나 타사 부하 분산 장치를 가져올 수 있습니다. 이 IP가 Arc 논리 네트워크와 동일한 서브넷에 있지만 Arc VM 논리 네트워크에 정의된 IP 풀 외부에 있는지 확인합니다.

Kubernetes 클러스터 및 애플리케이션에 대한 IP 주소 예약에 대한 CLI 명령 예제

이 섹션에서는 Jane이 시나리오에 대해 실행하는 명령 집합에 대해 설명합니다. 먼저 IP 주소가 16개 이상인 IP 풀을 사용하여 논리 네트워크를 만듭니다. 20개의 IP 주소가 있는 IP 풀을 만들어 N일째에 크기를 조정하는 옵션을 제공했습니다. 논리 네트워크의 매개 변수 옵션에 대한 자세한 내용은 다음을 참조하세요 az stack-hci-vm network lnet create.

$ipPoolStart = "10.220.32.18"
$ipPoolEnd = "10.220.32.37"
az stack-hci-vm network lnet create --subscription $subscription --resource-group $resource_group --custom-location $customLocationID --name $lnetName --vm-switch-name $vmSwitchName --ip-allocation-method "Static" --address-prefixes $addressPrefixes --gateway $gateway --dns-servers $dnsServers --ip-pool-start $ipPoolStart --ip-pool-end $ipPoolEnd

다음으로, 이전 논리 네트워크를 사용하여 AKS Arc 클러스터를 만듭니다.

az aksarc create -n $aksclustername -g $resource_group --custom-location $customlocationID --vnet-ids $lnetName --aad-admin-group-object-ids $aadgroupID --generate-ssh-keys

이제 Arc VM 논리 네트워크와 동일한 서브넷에서 IP 주소가 3개인 IP 풀을 사용하여 MetalLB 부하 분산 장치를 사용하도록 설정할 수 있습니다. 애플리케이션에 증가가 필요한 경우 나중에 더 많은 IP 풀을 추가할 수 있습니다. 자세한 요구 사항은 MetalLB Arc 확장 개요참조하세요.

az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subscription/resourceGroups/$resource_group/providers/Microsoft.Kubernetes/connectedClusters/metallb-demo --addresses 10.220.32.47-10.220.32.49 --advertise-mode ARP

AKS 클러스터 및 Arc VM에 대한 LNET 고려 사항

Azure Local의 논리 네트워크는 AKS 클러스터와 Arc VM 모두에서 사용됩니다. 다음 두 가지 방법 중 하나로 논리 네트워크를 구성할 수 있습니다.

  • AKS와 Arc VM 간에 논리 네트워크를 공유합니다.
  • AKS 클러스터 및 Arc VM에 대한 별도의 논리 네트워크를 정의합니다.

Azure Local에서 AKS와 Arc VM 간에 논리 네트워크를 공유하면 간소화된 통신, 비용 절감 및 간소화된 네트워크 관리의 이점을 얻을 수 있습니다. 그러나 이 접근 방식은 리소스 경합, 보안 위험 및 문제 해결의 복잡성과 같은 잠재적인 과제도 소개합니다.

조건 논리 네트워크 공유 별도의 논리 네트워크 정의
구성 복잡성 단일 네트워크를 사용하여 더 간단한 구성을 통해 설정 복잡성을 줄입니다. VM 및 AKS 클러스터에 대해 여러 논리 네트워크를 구성해야 하므로 더 복잡한 설정입니다.
확장성 Arc VM과 AKS 클러스터가 모두 네트워크 리소스를 공유함에 따라 잠재적인 확장성 제한 사항입니다. 네트워크 리소스가 분리되어 독립적으로 확장할 수 있으므로 확장성이 더 높습니다.
네트워크 정책 관리 하나의 네트워크 정책 집합으로 더 쉽게 관리할 수 있지만 워크로드를 격리하기가 더 어렵습니다. 논리 네트워크별로 별도의 정책을 적용할 수 있으므로 워크로드를 보다 쉽게 격리할 수 있습니다.
보안 고려 사항 제대로 분할되지 않은 경우 통신 간 취약성의 위험이 증가합니다. 각 네트워크를 보다 엄격하게 분할하고 격리할 수 있으므로 보안이 향상됩니다.
네트워크 오류의 영향 공유 네트워크의 오류는 AKS 및 Arc VM 모두에 동시에 영향을 줄 수 있습니다. 한 네트워크의 오류는 해당 네트워크 내의 워크로드에만 영향을 주어 전반적인 위험을 줄입니다.

Pod CIDR 및 서비스 CIDR에 대한 IP 주소 범위 할당

이 섹션에서는 클러스터 내의 Pod 및 서비스 통신에 Kubernetes에서 사용하는 IP 주소 범위에 대해 설명합니다. 이러한 IP 주소 범위는 AKS 클러스터 만들기 프로세스 중에 정의되며 클러스터 내의 Pod 및 서비스에 고유한 IP 주소를 할당하는 데 사용됩니다.

Pod 네트워크 CIDR

Pod 네트워크 CIDR은 Kubernetes 클러스터 내에서 실행되는 개별 Pod에 고유한 IP 주소를 할당하기 위해 Kubernetes에서 사용하는 IP 주소 범위입니다. 각 Pod는 이 범위 내에서 자체 IP 주소를 가져오며, 이를 통해 Pod는 서로 통신하고 클러스터 내의 서비스와 통신할 수 있습니다. AKS에서 Pod IP 주소는 VXLAN 모드에서 Calico CNI를 통해 할당됩니다. Calico VXLAN은 Pod 네트워크 CIDR에서 Pod의 IP 주소가 실제 네트워크를 통해 가상화되고 터널되는 오버레이 네트워크를 만드는 데 도움이 됩니다. 이 모드에서는 각 Pod에 Pod 네트워크 CIDR의 IP 주소가 할당되지만 이 IP 주소는 실제 네트워크에서 직접 라우팅할 수 없습니다. 대신 네트워크 패킷 내에 캡슐화되고 기본 물리적 네트워크를 통해 전송되어 다른 노드의 대상 Pod에 도달합니다.

AKS는 Pod 네트워크 CIDR에 대해 10.244.0.0/16의 기본값을 제공합니다. AKS는 Pod 네트워크 CIDR에 대한 사용자 지정을 지원합니다. AKS 클러스터를 만들 때 매개 변수를 --pod-cidr 사용하여 고유한 값을 설정할 수 있습니다. CIDR IP 범위가 노드당 및 Kubernetes 클러스터 전체의 최대 Pod 수를 수용할 수 있을 만큼 충분히 큰지 확인합니다.

서비스 네트워크 CIDR

서비스 네트워크 CIDR은 클러스터 내 LoadBalancers, ClusterIP 및 NodePort와 같은 Kubernetes 서비스에 예약된 IP 주소의 범위입니다. Kubernetes는 다음 서비스 유형을 지원합니다.

  • ClusterIP: 클러스터 내에서 서비스를 노출하는 기본 서비스 유형입니다. 서비스 네트워크 CIDR에서 할당된 IP는 Kubernetes 클러스터 내에서만 액세스할 수 있습니다.
  • NodePort: 각 노드의 IP 주소에 있는 특정 포트에 서비스를 노출합니다. ClusterIP는 여전히 내부적으로 사용되지만 외부 액세스는 노드 IP 및 특정 포트를 통해 사용됩니다.
  • LoadBalancer: 이 형식은 클라우드 공급자 관리 부하 분산 장치를 만들고 서비스를 외부에 노출합니다. 클라우드 공급자는 일반적으로 외부 IP 할당을 관리하지만 내부 ClusterIP는 서비스 네트워크 CIDR 내에 유지됩니다.

AKS는 서비스 네트워크 CIDR에 대해 10.96.0.0/12의 기본값을 제공합니다. AKS는 현재 서비스 네트워크 CIDR에 대한 사용자 지정을 지원하지 않습니다.

다음 단계

Azure Local 버전 23H2에서 Kubernetes 클러스터에 대한 논리 네트워크 만들기