다음을 통해 공유


Azure CLI를 사용하여 Azure Arc 지원 Kubernetes 클러스터용 MetalLB 확장 배포

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

부하 분산 장치의 주요 목적은 Kubernetes 클러스터의 여러 노드에 트래픽을 분산하는 것입니다. 이렇게 하면 가동 중지 시간을 방지하고 애플리케이션의 전반적인 성능을 향상시킬 수 있습니다. Azure Arc에서 사용하도록 설정된 AKS는 Arc 확장을 사용하여 Kubernetes 클러스터에서 MetalLB 부하 분산 장치 인스턴스를 만들 수 있도록 지원합니다.

필수 조건

  • Linux 노드가 하나 이상 있는 Azure Arc 지원 Kubernetes 클러스터. Azure CLI 또는 Azure Portal을 사용하여 Azure Local 버전 23H2에서 Kubernetes 클러스터를 만들 수 있습니다. Azure Local의 AKS 버전 23H2 클러스터는 기본적으로 Arc를 사용하도록 설정되어 있습니다.
  • 부하 분산 장치에 대한 IP 주소가 충분한지 확인합니다. Azure Local 버전 23H2의 AKS의 경우 부하 분산 장치용으로 예약된 IP 주소가 Arc VM 논리 네트워크 및 컨트롤 플레인 IP의 IP 주소와 충돌하지 않도록 합니다. Kubernetes의 IP 주소 계획 및 네트워킹에 대한 자세한 내용은 Kubernetes에 대한 네트워킹 요구 사항 및 Kubernetes의 IP 주소 계획을 참조하세요.
  • 이 방법 가이드에서는 Metal LB의 작동 방식을 이해한다고 가정합니다. 자세한 내용은 Kubernetes용 MetalLB에 대한 개요를 참조 하세요.

Azure CLI 확장 설치

다음 명령을 실행하여 필요한 Azure CLI 확장을 설치합니다.

az extension add -n k8s-runtime --upgrade

MetalLB에 Arc 확장 사용

계속하기 전에 다음 변수를 구성합니다.

매개 변수 설명
$subId Kubernetes 클러스터의 Azure 구독 ID입니다.
$rgName Kubernetes 클러스터의 Azure 리소스 그룹입니다.
$clusterName Kubernetes 클러스터의 이름입니다.

옵션 1: 명령을 사용하여 MetalLB에 Arc 확장 사용 az k8s-runtime load-balancer enable

다음 명령을 사용하여 MetalLB에 Arc 확장을 사용하도록 설정하려면 Graph 권한 Application.Read.All이 있어야 합니다. Azure 구독에 로그인하고 다음 명령을 실행하여 이 권한이 있는지 확인할 수 있습니다.

`az ad sp list --filter "appId eq '087fca6e-4606-4d41-b3f6-5ebdf75b8b4c'" --output json`

명령이 실패하면 Azure 테넌트 관리자에게 문의하여 역할을 가져옵니다 Application.Read.All .

권한이 있는 경우 명령을 사용하여 az k8s-runtime load-balancer enable Arc 확장을 설치하고 Kubernetes 클러스터에 대한 리소스 공급자를 등록할 수 있습니다. 매개 변수는 --resource-uri Kubernetes 클러스터의 리소스 관리자 ID를 참조합니다.

az k8s-runtime load-balancer enable --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName

옵션 2: 명령을 사용하여 MetalLB에 Arc 확장 사용 az k8s-extension add

Graph 권한 Application.Read.All없는 경우 다음 단계를 수행할 수 있습니다.

  1. Microsoft.KubernetesRuntime RP 아직 등록하지 않은 경우 등록합니다. Azure 구독당 한 번만 등록하면 됩니다. Azure Portal을 사용하여 리소스 공급자를 등록할 수도 있습니다. 리소스 공급자 및 필요한 권한을 등록하는 방법에 대한 자세한 내용은 리소스 공급자를 등록하는 방법을 참조하세요.
az provider register -n Microsoft.KubernetesRuntime

다음 명령을 실행하여 리소스 공급자가 성공적으로 등록되었는지 확인할 수 있습니다.

az provider show -n Microsoft.KubernetesRuntime -o table

예상 출력:

Namespace                    RegistrationPolicy    RegistrationState
---------------------------  --------------------  -------------------
Microsoft.KubernetesRuntime  RegistrationRequired  Registered
  1. MetalLB용 Arc 확장을 설치하려면 MetalLB 확장 리소스 공급자의 AppID를 가져온 다음 확장 만들기 명령을 실행합니다. Arc Kubernetes 클러스터당 한 번 다음 명령을 실행해야 합니다.

az ad sp list를 실행하여 Arc 확장의 애플리케이션 ID를 가져옵니다. 다음 명령을 실행하려면 Azure 테넌트 user 멤버여야 합니다. 사용자 및 게스트 멤버 자격에 대한 자세한 내용은 Microsoft Entra ID의 기본 사용자 권한을 참조하세요.

$objID = az ad sp list --filter "appId eq '00001111-aaaa-2222-bbbb-3333cccc4444'" --query "[].id" --output tsv

$objID 있으면 Kubernetes 클러스터에 MetalLB Arc 확장을 설치할 수 있습니다. 아래 명령을 실행하려면 Kubernetes 확장 기여자 역할이 있어야 합니다.

az k8s-extension create --cluster-name $clusterName -g $rgName --cluster-type connectedClusters --extension-type microsoft.arcnetworking --config k8sRuntimeFpaObjectId=$objID -n arcnetworking

Kubernetes 클러스터에 MetalLB 부하 분산 장치 배포

이제 명령을 실행 az k8s-runtime load-balancer create 하여 Kubernetes 클러스터에 대한 부하 분산 장치를 원격으로 만들 수 있습니다. 이 명령은 네임스페이스에 kube-system형식 IPAddressPool 의 사용자 지정 리소스를 만듭니다.

계속하기 전에 다음 변수를 구성합니다.

매개 변수 설명
$lbName MetalLB 부하 분산 장치 인스턴스의 이름입니다.
$advertiseMode MetalLB 부하 분산 장치의 모드입니다. 지원되는 값은 ARP, BGP또는 Both.
$ipRange 또는 모드에서 MetalLB 부하 분산 장치의 ARP Both IP 범위입니다.

보급 모드인 BGP 경우 또는 Both종류의 BGPAdvertisement사용자 지정 리소스도 만듭니다. 보급 모드이거나 ARP Both다음과 같은 형식 L2Advertisement의 사용자 지정 리소스를 만듭니다.

az k8s-runtime load-balancer create --load-balancer-name $lbName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --addresses $ipRange --advertise-mode $advertiseMode

Kubernetes 클러스터에 대한 BGP 피어 만들기

명령을 실행하여 Kubernetes 클러스터에 대한 BGP 피어를 원격으로 만듭니다 az k8s-runtime bgp-peer create . BGP 피어는 모드를 사용 BGP 하거나 Both 보급하는 모든 부하 분산 장치에 효과적입니다. 또는 모드에서 BGP Both MetalLB 부하 분산 장치를 사용하는 경우 BGP 피어를 만들어야 합니다.

계속하기 전에 다음 변수를 구성합니다.

매개 변수 설명
$peerName BGP 피어의 이름입니다.
$myASN 세션의 로컬 끝에 사용할 AS 번호입니다.
$peerASN 세션의 원격 끝에서 예상할 AS 번호입니다.
$peerIP 세션을 설정할 때 전화를 걸 주소입니다.
az k8s-runtime bgp-peer create --bgp-peer-name $peerName --resource-uri subscriptions/$subId/resourceGroups/$rgName/providers/Microsoft.Kubernetes/connectedClusters/$clusterName --my-asn $myASN --peer-asn $peerASN --peer-address $peerIP

다음 단계