Share via


AKS Edge Essentials 전체 Kubernetes 배포

주의

여러 컴퓨터에 대한 전체 배포는 현재 실험적 기능입니다. 이 기능에 대해 적극적으로 작업 중입니다.

분산 마이크로 서비스 아키텍처를 지원하도록 여러 컴퓨터에서 실행되도록 AKS Edge Essentials 클러스터를 구성할 수 있습니다. AKS Edge Essentials 정적 구성용이며 클라우드 또는 AKS HCI의 AKS와 달리 동적 VM 생성/삭제 또는 클러스터 수명 주기 관리를 사용하도록 설정하지 않습니다. AKS Edge Essentials 필요한 경우 Windows VM과 함께 각 컴퓨터당 하나의 Linux VM만 있습니다. 각 VM에는 설치 시 할당된 RAM, 스토리지 및 실제 CPU 코어의 정적 할당이 있습니다. 다중 노드 배포에서 컴퓨터 중 하나는 Kubernetes 제어 노드가 있는 기본 머신이고 다른 컴퓨터는 작업자 노드가 있는 보조 컴퓨터가 됩니다. 이 배포 시나리오에서는 외부 스위치를 사용하여 K8S 클러스터를 구성합니다. 이 구성을 사용하면 네트워크의 다른 컴퓨터에서 를 실행하고 kubectl , 외부 스위치에서 워크로드 성능을 평가하는 등의 작업을 수행할 수 있습니다.

사전 요구 사항

컴퓨터 설정 문서에 설명된 대로 컴퓨터를 설정합니다 .

1단계: 전체 Kubernetes 배포 구성 매개 변수

다음 명령을 사용하여 확장 가능한 클러스터를 만드는 데 필요한 매개 변수를 생성할 수 있습니다.

New-AksEdgeConfig -DeploymentType ScalableCluster -outFile .\aksedge-config.json | Out-Null

그러면 Linux 노드를 사용하여 확장 가능한 클러스터를 만드는 데 필요한 구성을 포함하는 aksedge-config.json 라는 구성 파일이 만들어집니다. 파일이 현재 작업 디렉터리에 만들어집니다. 구성 파일을 만들기 위한 추가 옵션은 다음 예제를 참조하세요. 구성 매개 변수에 대한 자세한 설명 은 여기에서 확인할 수 있습니다.

확장 가능한 Kubernetes 배포에 주의해야 할 주요 매개 변수는 다음과 같습니다.

  • 외부 스위치 정보: 전체 배포는 외부 스위치를 사용하여 노드 간 통신을 사용하도록 설정합니다. 매개 변수를 MachineConfigType.NetworkConnection.AdapterName 또는 Wi-FiEthernet 지정해야 합니다.

    # get the list of available adapters in the machine
    Get-NetAdapter -Physical | Where-Object { $_.Status -eq 'Up' }
    

    Hyper-V에서 외부 스위치를 만든 경우 구성 파일에서 vswitch 세부 정보를 지정하도록 선택할 수 있습니다. Hyper-V 관리자에서 외부 스위치를 만들고 명령을 실행 New-AksEdgeDeployment 하지 않으면 AKS Edge Essentials 라는 aksedgesw-ext 외부 스위치를 자동으로 만들어 배포에 사용합니다.

    참고

    이 릴리스에서는 스위치에 Wi-Fi 어댑터를 사용하는 경우 명령을 사용하여 외부 스위치 New-AksEdgeDeployment 를 자동으로 만드는 데 알려진 문제가 있습니다. 이 경우 먼저 Hyper-V 관리자 - 가상 스위치 관리자를 사용하여 외부 스위치를 만들고, 스위치를 Wi-Fi 어댑터에 매핑한 다음, 아래 설명된 대로 구성 JSON에 스위치 세부 정보를 제공합니다.

    Hyper-V 스위치 관리자의 스크린샷

  • IP 주소: 제어 평면, Kubernetes 서비스노드(VM)에 대해 네트워크에서 무료 IP 주소를 할당해야 합니다. 자세한 내용은 AKS Edge Essentials 네트워킹 개요를 참조하세요. 예를 들어 192.168.1.0/24 IP 주소 범위가 있는 로컬 네트워크에서는 DHCP scope 외부에 1.151 이상이 있을 수 있으므로 무료일 수 있습니다. AKS Edge Essentials 현재 IPv4 주소만 지원합니다. 이상적으로 사용할 수 있는 무료 IP 주소를 알 수 있습니다. 그러나 구성에서 해당 IP 주소를 사용하지 않도록 GitHub 리포지토리AksEdge-ListUsedIPv4s 스크립트를 사용하여 현재 사용 중인 IP를 볼 수 있습니다. 구성 파일ControlPlaneEndpointIp의 섹션에서 , , , Ip4GatewayAddressIp4PrefixLengthServiceIPRangeSize, ServiceIPRangeStartDnsServers매개 변수를 제공해야 Network 합니다.

  • 기본적으로 값은 Network.NetworkPlugin 입니다 flannel. Flannel은 K3S 클러스터의 기본 CNI입니다. K8S 클러스터에서 를 NetworkPlugincalico변경합니다.

  • 이전 매개 변수 외에도 , , , , , WindowsNode.CpuCountWindowsNode.Ip4AddressWindowsNode.MemoryInMBLinuxNode.DataSizeInGBInit.ServiceIPRangeSizeLinuxNode.MemoryInMBLinuxNode.Ip4AddressNetwork.InternetDisabled설명된LinuxNode.CpuCount 대로 배포 구성에 따라 다음 매개 변수를 설정할 수 있습니다.

2단계: 구성 파일 유효성 검사

aksedge-config.json 파일을 업데이트한 후 AksEdgePrompt 도구를 실행합니다. 이 도구는 모듈이 로드된 관리자 권한 PowerShell 창을 엽니다. 그런 다음, 다음 명령을 실행하여 cmdlet을 사용하여 네트워크 매개 변수의 유효성을 Test-AksEdgeNetworkParameters 검사합니다.

Test-AksEdgeNetworkParameters -JsonConfigFilePath .\aksedge-config.json

3단계: 전체 배포 클러스터 만들기

가 반환true되면 Test-AksEdgeNetworkParameters 배포를 만들 준비가 된 것입니다. cmdlet을 사용하여 배포를 New-AksEdgeDeployment 만들 수 있습니다.

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json

cmdlet은 New-AksEdgeDeployment kubeconfig 파일을 자동으로 검색합니다.

4단계: 배포 유효성 검사

kubectl get nodes -o wide
kubectl get pods --all-namespaces -o wide

Kubernetes 클러스터의 스크린샷은 다음과 같습니다.

실행 중인 모든 Pod를 보여 주는 다이어그램

5단계: Windows 작업자 노드 추가(선택 사항)

주의

Windows 작업자 노드는 이 릴리스의 실험적 기능입니다. 이 기능에 대해 적극적으로 작업 중입니다.

기존 Linux 전용 컴퓨터에 Windows 노드를 추가하려는 경우 다음을 실행할 수 있습니다.

New-AksEdgeScaleConfig -ScaleType AddNode -NodeType Windows -WindowsNodeIp "xxx" -outFile .\ScaleConfig.json | Out-Null

여기에서 Windows VM에 대한 및/또는 MemoryInMB 등의 CpuCount 매개 변수를 지정할 수도 있습니다.

생성된 구성 파일을 사용하고 다음 명령을 실행하여 Windows 노드를 추가할 수 있습니다.

Add-AksEdgeNode -JsonConfigFilePath .\ScaleConfig.json

다양한 배포 옵션에 대한 예제 구성

노드에 리소스 할당

Arc에 연결하고 GitOps를 사용하여 앱을 배포하려면 (처리 능력), 4GB 이상 LinuxNode.MemoryinMB (RAM)에 CPU 4개 이상을 할당 LinuxNode.CpuCount 하고 0ServiceIpRangeSize보다 큰 숫자를 에 할당합니다. 여기서는 Kubernetes 서비스에 대해 10개의 IP 주소를 할당합니다.

{
    "Init": {
        "ServiceIpRangeSize": 10,
        "ServiceIPRangeStart": "192.168.1.151"
    },
    "Network": {
        "ControlPlaneEndpointIp": "192.168.1.191",
        "NetworkPlugin": "calico",
        "Ip4GatewayAddress": "192.168.1.1",
        "Ip4PrefixLength": 24,
        "DnsServers": ["192.168.1.1"]
    },
    "Machines": [
        {
            "NetworkConnection": {
                "AdapterName": "Ethernet"
            },
            "LinuxNode": {
                "CpuCount": 4,
                "MemoryInMB": 4096,
                "DataSizeInGB": 20,
                "Ip4Address": "192.168.1.171"
            }
        }
    ]
}

Linux 및 Windows 노드 Create

컴퓨터에서 Linux 컨트롤 플레인과 Windows 작업자 노드를 모두 실행하려면 다음 명령을 사용하여 구성 파일을 만듭니다.

New-AksEdgeConfig -DeploymentType ScalableCluster -NodeType LinuxAndWindows -outFile .\aksedge-config.json | Out-Null

명령을 사용하여 배포를 Create.

New-AksEdgeDeployment -JsonConfigFilePath .\aksedge-config.json
{
  "Machines": [
      {
          "NetworkConnection": {
              "AdapterName": "Ethernet"
          },
          "LinuxNode": {
              "CpuCount": 4,
              "MemoryInMB": 4096,
              "DataSizeInGB": 20,
              "Ip4Address": "192.168.1.171"
          },
          "WindowsNode": {
              "CpuCount": 2,
              "MemoryInMB": 4096,
              "Ip4Address": "192.168.1.172"
          }
      }
  ]
}

다음 단계