다음을 통해 공유


Azure Operator Nexus Kubernetes 서비스에서 서비스 부하 분산 장치 구성

이 문서에서는 Nexus Kubernetes 클러스터에서 서비스 부하 분산 장치를 구성하는 방법을 알아봅니다. 부하 분산 장치를 사용하면 외부 서비스가 클러스터 내에서 실행되는 서비스에 액세스할 수 있습니다. 이 가이드는 구성 측면에 중점을 두고 프로세스를 이해하는 데 도움이 되는 예제를 제공합니다. 이 가이드에 따라 Nexus Kubernetes 클러스터에서 서비스 부하 분산 장치를 효과적으로 구성할 수 있습니다.

필수 조건

이 방법 가이드를 진행하기 전에 다음을 수행하는 것이 좋습니다.

  • 포괄적인 개요와 관련 단계는 Nexus Kubernetes 클러스터 빠른 시작 가이드를 참조하세요.
  • 가이드를 원활하게 구현하려면 간략한 필수 조건을 충족하는지 확인합니다.
  • 배포 및 서비스를 포함한 Kubernetes 개념에 대한 지식
  • 부하 분산 장치 IP 풀에 사용할 수 있는 IP 주소 범위를 확보하려면 네트워크 관리자에게 문의하세요.

제한 사항

  • IP 풀 구성은 변경할 수 없습니다. 일단 설정되면 Nexus Kubernetes 클러스터에서 수정할 수 없습니다.
  • IP 풀 이름은 소문자 또는 숫자로 시작하고 소문자 또는 숫자로 끝나야 합니다.
  • IP 풀 이름은 잠재적인 문제 또는 제한을 방지하기 위해 63자를 초과하면 안 됩니다.
  • IP 주소 풀은 클러스터 내의 충돌 및 네트워킹 문제를 방지하기 위해 기존 POD CIDR, 서비스 CIDR 또는 CNI 접두사와 겹치지 않아야 합니다.

Important

이러한 지침은 새 Nexus Kubernetes 클러스터를 만들기 위한 것입니다. IP 풀 구성을 변경할 수 없으므로 기존 클러스터에 Bicep 템플릿을 적용하지 마십시오. IP 풀 구성을 사용하여 클러스터를 만든 후에는 수정할 수 없습니다.

구성 옵션

서비스 부하 분산 장치에 대한 IP 주소 풀을 구성하기 전에 사용 가능한 다양한 구성 옵션을 이해하는 것이 중요합니다. 이러한 옵션을 사용하면 특정 요구 사항에 따라 IP 주소 풀의 동작 및 매개 변수를 정의할 수 있습니다.

IP 주소 풀에 대한 구성 옵션을 살펴보겠습니다.

필수 매개 변수

IP 주소 풀 구성에는 addressesname 등, 두 필드가 있어야 합니다. 이러한 필드는 IP 주소 범위를 정의하고 풀을 식별하는 데 필수적입니다.

  • addresses 필드는 풀 내의 할당에 사용할 수 있는 IP 주소 범위 목록을 지정합니다. CIDR 형식으로 각 범위를 서브넷으로 정의할 수 있습니다. IPv4의 경우 /32, IPv6의 경우 /128과 같은 단일 IP 주소를 사용하지 않습니다.
  • name 필드는 IP 주소 풀에 대한 고유 식별자 역할을 합니다. 풀을 BGP(Border Gateway Protocol) 보급 알림과 연결하여 클러스터 내에서 효과적인 통신을 가능하게 합니다.

참고 항목

Kubernetes LoadBalancer 서비스에 이중 스택 주소를 사용하도록 설정하려면 IP 풀 구성에 IPv4 및 IPv6 CIDR이 모두 포함되어 있는지 확인합니다.

선택적 매개 변수

필수 필드 외에 IP 주소 풀 구성의 추가 사용자 지정에 사용할 수 있는 선택적 필드도 있습니다.

  • autoAssign 필드는 IP 주소가 풀에서 자동으로 할당되는지 여부를 결정합니다. 이 필드는 기본값이 True, 형식은 string입니다. 기본 설정에 따라 True 또는 False로 설정할 수 있습니다.
  • onlyUseHostIps 필드는 풀 내에서 .0.255로 끝나는 IP 주소의 사용을 제어합니다. 이 옵션을 사용하도록 설정하면 예약된 네트워크 및 브로드캐스트 주소를 제외한 .1.254(포함) 범위의 IP 주소로 사용이 제한됩니다.

IP 주소 풀 구성에 대한 Bicep 템플릿 매개 변수

다음 JSON 코드 조각은 Bicep 템플릿에서 IP 주소 풀을 구성하는 데 필요한 매개 변수를 보여줍니다.

"ipAddressPools": {
  "value": [
    {
      "addresses": ["<IP>/<CIDR>"],
      "name": "<pool-name>",
      "autoAssign": "True",  /* "True"/"False" */
      "onlyUseHostIps": "True"  /* "True"/"False" */
    }
  ]
}

클러스터에 IP 풀 구성을 추가하려면 빠른 시작 과정에서 만든 kubernetes-deploy-parameters.json 파일을 업데이트해야 합니다. 원하는 설정에 따라 이 파일에 IP 풀 구성을 포함합니다.

매개 변수 파일에 IP 풀 구성을 추가한 후 Bicep 템플릿 배포를 진행할 수 있습니다. 이 작업은 지정된 IP 주소 풀 구성을 사용하여 새 클러스터를 설정하므로 의도한 대로 IP 풀을 활용할 수 있습니다.

이러한 지침에 따라 원하는 IP 풀 구성을 사용하여 새 Nexus Kubernetes 클러스터를 만들고 클러스터 서비스에 대한 IP 주소 풀을 활용할 수 있습니다.

매개 변수 예

이 매개 변수 파일은 BGP 부하 분산 장치를 사용하는 클러스터를 만들기 위한 빠른 시작 가이드 Bicep 템플릿에 사용하기 위한 것입니다. 여기에는 BGP 부하 분산 장치 기능을 사용하여 클러스터를 설정하는 데 필요한 구성 설정이 포함되어 있습니다. 이 매개 변수 파일을 Bicep 템플릿과 함께 사용하면 원하는 BGP 부하 분산 장치 기능을 사용하여 클러스터를 만들 수 있습니다.

{
  "$schema": "https://schema.management.azure.com/schemas/2019-04-01/deploymentParameters.json#",
  "contentVersion": "1.0.0.0",
  "parameters": {
    "kubernetesClusterName":{
      "value": "lb-test-cluster"
    },
    "adminGroupObjectIds": {
      "value": [
        "00000000-0000-0000-0000-000000000000"
      ]
    },
    "cniNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/l3Networks/<l3Network-name>"
    },
    "cloudServicesNetworkId": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<resource_group>/providers/Microsoft.NetworkCloud/cloudServicesNetworks/<csn-name>"
    },
    "extendedLocation": {
      "value": "/subscriptions/<subscription_id>/resourceGroups/<managed_resource_group>/providers/microsoft.extendedlocation/customlocations/<custom-location-name>"
    },
    "location": {
      "value": "eastus"
    },
    "sshPublicKeys": {
      "value": [
        {
          "keyData": "ssh-rsa AAAAB..."
        },
        {
          "keyData": "ssh-rsa AAAAC..."
        }
      ]
    },
    "ipAddressPools": {
      "value": [
        {
          "addresses": ["<IP>/<CIDR>"],
          "name": "<pool-name>",
          "autoAssign": "True",
          "onlyUseHostIps": "True"
        }
      ]
    }
  }
}

참고 항목

DualStack 서비스를 만들려는 경우 주소 풀에 IPv4 CIDR과 IPv6 CIDR이 모두 포함되어 있는지 확인합니다. 이렇게 하면 부하 분산 장치 구성에서 IPv4 및 IPv6 주소를 동시에 지원할 수 있습니다.

예: 서비스에 대한 고정 IP 주소 할당

서비스에 고정 IP 주소를 할당하려면 다음 명령을 사용할 수 있습니다.

배포 만들기

kubectl create deployment nginx --image=nginx --port 80

고정 IP 할당(LoadBalancerIP)

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool1-static \
    --type LoadBalancer \
    --load-balancer-ip <IP from pool-1>

<IP from pool-1>를 IP 풀의 원하는 IP 주소로 바꿉니다.

고정 IP 할당(ExternalIP)

kubectl expose deployment nginx \
    --name nginx-clusterip-pool1-static \
    --type ClusterIP \
    --external-ip <IP from pool-1>

<IP from pool-1>를 IP 풀의 원하는 IP 주소로 바꿉니다.

예: 특정 IP 풀의 서비스에 대한 IP 주소 할당

특정 IP 풀에서 서비스에 IP 주소를 할당하려면 다음 명령을 사용할 수 있습니다.

kubectl expose deployment nginx \
    --name nginx-loadbalancer-pool2-auto \
    --type LoadBalancer \
    --overrides '{"metadata":{"annotations":{"metallb.universe.tf/address-pool":"pool-2"}}}'

이 명령은 IP 풀 pool-2에서 서비스에 IP 주소를 할당합니다. 필요에 따라 풀 이름을 조정합니다. 이러한 예제를 시도하기 전에 두 개의 다른 IP 주소 풀이 있는 Nexus Kubernetes 클러스터를 이미 만들었어야 합니다. 아직 수행하지 않은 경우 필요한 단계에 따라 클러스터를 만들고 그에 따라 IP 풀을 구성합니다.

참고 항목

IP 주소 풀 이름은 대/소문자를 구분합니다. 풀 이름을 지정할 때 올바른 대/소문자를 사용해야 합니다.

다음 단계

새로 구성된 부하 분산 장치를 활용하여 Nexus Kubernetes 클러스터 내에서 NF(네트워크 함수)를 배포해 볼 수 있습니다. 이 구성을 사용하면 부하 분산 기능을 테스트하고 NF 인스턴스 간에 트래픽이 분산되는 방식을 관찰할 수 있습니다.