Управление устройством Azure Stack Edge Pro с GPU при помощи Windows PowerShell

ОБЛАСТЬ ПРИМЕНЕНИЯ:Yes for Pro GPU SKUAzure Stack Edge Pro — GPUYes for Pro 2 SKUAzure Stack Edge Pro 2Yes for Pro R SKUAzure Stack Edge Pro RYes for Mini R SKUAzure Stack Edge Mini R

Решение Azure Stack Edge Pro с GPU позволяет обрабатывать данные и передавать их по сети в Azure. В этой статье описываются некоторые задачи по настройке устройства Azure Stack Edge Pro с GPU и управлению им. Для управления устройством можно использовать портал Azure, локальный пользовательский веб-интерфейс или интерфейс Windows PowerShell.

В этой статье основное внимание уделяется подключению к интерфейсу PowerShell на устройстве и задачам, которые можно выполнять с его помощью.

Подключитесь к интерфейсу PowerShell.

Процедуры удаленного подключения к устройству зависят от используемой операционной системы клиента.

Удаленное подключение из клиента Windows

Необходимые компоненты

Перед тем как начать, убедитесь в следующем.

  • На клиенте Windows работает Windows PowerShell 5.0 или более поздней версии.

  • У клиента Windows имеется цепочка подписывания (корневой сертификат), которая соответствует сертификату узла, установленному на устройстве. Подробные инструкции см. в статье Установка сертификата на клиенте Windows.

  • Файл hosts, расположенный в папке C:\Windows\System32\drivers\etc, для клиента Windows, содержит запись, соответствующую сертификату узла, в следующем формате:

    <Device IP> <Node serial number>.<DNS domain of the device>

    Ниже показан пример записи для файла hosts.

    10.100.10.10 1HXQG13.wdshcsso.com

Подробные инструкции

Выполните следующие действия, чтобы удаленно подключиться из клиента Windows.

  1. Запустите сеанс Windows PowerShell от имени администратора.

  2. Убедитесь, что на вашем клиенте запущена служба удаленного управления Windows. В командной строке введите:

    winrm quickconfig
    

    Дополнительные сведения см. в разделе "Установка и настройка" для удаленного управления Windows.

  3. Назначьте переменную строке подключения, используемой в файле hosts.

    $Name = "<Node serial number>.<DNS domain of the device>"
    

    Замените <Node serial number> и <DNS domain of the device> серийным номером узла и доменом DNS вашего устройства. Вы можете получить значения серийного номера узла на странице Сертификаты, а домена DNS — на странице Устройство в локальном веб-интерфейсе устройства.

  4. Введите следующую команду, чтобы добавить эту строку подключения для устройства к списку доверенных узлов клиента:

    Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    
  5. Запустите сеанс Windows PowerShell на устройстве:

    Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    

    При появлении ошибки, связанной с отношением доверия, проверьте, установлена ли цепочка подписывания сертификата узла, переданного на устройство, на клиенте, обращающемся к устройству.

  6. В ответ на запрос укажите пароль. Используйте тот же пароль, который используется для входа в локальный веб-интерфейс. Пароль локального пользовательского веб-интерфейса по умолчанию — Password1. При успешном подключении к устройству с помощью удаленной оболочки PowerShell появится следующий пример выходных данных:

    Windows PowerShell
    Copyright (C) Microsoft Corporation. All rights reserved.
    
    PS C:\WINDOWS\system32> winrm quickconfig
    WinRM service is already running on this machine.
    PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com"
    PS C:\WINDOWS\system32> Set-Item WSMan:\localhost\Client\TrustedHosts $Name -Concatenate -Force
    PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL
    
    WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing. Changes made through this interface without involving Microsoft Support could result in an unsupported configuration.
    [1HXQG13.wdshcsso.com]: PS>
    

При использовании параметра -UseSSL выполняется удаленное взаимодействие через PowerShell по протоколу HTTPS. Рекомендуется всегда использовать протокол HTTPS для удаленного подключения с помощью PowerShell. В доверенных сетях можно выполнять удаленное взаимодействие с помощью PowerShell через HTTP. Сначала включите удаленный PowerShell через HTTP в локальном пользовательском интерфейсе. Затем вы можете подключиться к интерфейсу PowerShell устройства с помощью предыдущей процедуры без параметра -UseSSL.

Если вы не используете сертификаты (рекомендуется использовать сертификаты!), эту проверку можно пропустить с помощью параметров сеанса: -SkipCACheck -SkipCNCheck -SkipRevocationCheck.

$sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck 
Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions    

Ниже приведен пример выходных данных при пропуске проверки сертификатов:

PS C:\WINDOWS\system32> $Name = "1HXQG13.wdshcsso.com"
PS C:\WINDOWS\system32> $sessOptions = New-PSSessionOption -SkipCACheck -SkipCNCheck -SkipRevocationCheck
PS C:\WINDOWS\system32> $sessOptions

MaximumConnectionRedirectionCount : 5
NoCompression                     : False
NoMachineProfile                  : False
ProxyAccessType                   : None
ProxyAuthentication               : Negotiate
ProxyCredential                   :
SkipCACheck                       : True
SkipCNCheck                       : True
SkipRevocationCheck               : True
OperationTimeout                  : 00:03:00
NoEncryption                      : False
UseUTF16                          : False
IncludePortInSPN                  : False
OutputBufferingMode               : None
MaxConnectionRetryCount           : 0
Culture                           :
UICulture                         :
MaximumReceivedDataSizePerCommand :
MaximumReceivedObjectSize         :
ApplicationArguments              :
OpenTimeout                       : 00:03:00
CancelTimeout                     : 00:01:00
IdleTimeout                       : -00:00:00.0010000

PS C:\WINDOWS\system32> Enter-PSSession -ComputerName $Name -Credential ~\EdgeUser -ConfigurationName Minishell -UseSSL -SessionOption $sessOptions
WARNING: The Windows PowerShell interface of your device is intended to be used only for the initial network configuration. Please
engage Microsoft Support if you need to access this interface to troubleshoot any potential issues you may be experiencing.
Changes made through this interface without involving Microsoft Support could result in an unsupported configuration.
[1HXQG13.wdshcsso.com]: PS>

Внимание

В текущем выпуске подключиться к интерфейсу PowerShell устройства можно только через клиент Windows. Параметр -UseSSL не работает с клиентами Linux.

Создать пакет поддержки.

Если возникают проблемы с устройством, из системных журналов можно создать пакет поддержки. Служба поддержки Майкрософт использует этот пакет для устранения неполадок. Чтобы создать пакет поддержки, выполните следующие шаги.

  1. Подключитесь к интерфейсу PowerShell на вашем устройстве.

  2. Используйте команду Get-HcsNodeSupportPackage, чтобы создать пакет поддержки. Этот командлет используется следующим образом.

    Get-HcsNodeSupportPackage [-Path] <string> [-Zip] [-ZipFileName <string>] [-Include {None | RegistryKeys | EtwLogs
            | PeriodicEtwLogs | LogFiles | DumpLog | Platform | FullDumps | MiniDumps | ClusterManagementLog | ClusterLog |
            UpdateLogs | CbsLogs | StorageCmdlets | ClusterCmdlets | ConfigurationCmdlets | KernelDump | RollbackLogs |
            Symbols | NetworkCmdlets | NetworkCmds | Fltmc | ClusterStorageLogs | UTElement | UTFlag | SmbWmiProvider |
            TimeCmds | LocalUILogs | ClusterHealthLogs | BcdeditCommand | BitLockerCommand | DirStats | ComputeRolesLogs |
            ComputeCmdlets | DeviceGuard | Manifests | MeasuredBootLogs | Stats | PeriodicStatLogs | MigrationLogs |
            RollbackSupportPackage | ArchivedLogs | Default}] [-MinimumTimestamp <datetime>] [-MaximumTimestamp <datetime>]
            [-IncludeArchived] [-IncludePeriodicStats] [-Credential <pscredential>]  [<CommonParameters>]
    

    Командлет собирает журналы с устройства и копирует эти журналы в указанную сеть или в локальную папку.

    Можно использовать следующие параметры:

    • -Path — определяет сеть или локальный путь для копирования пакета поддержки. (требуется)
    • -Credential — определяет учетные данные для доступа к защищенному пути.
    • -Zip — определяет необходимость создания ZIP-файла.
    • -Include — определяет, нужно ли включать в пакет поддержки подходящие для этого компоненты. Если этот параметр не задан, для него предполагается значение Default.
    • -IncludeArchived — определяет, нужно ли включать в пакет поддержки архивированные журналы.
    • -IncludePeriodicStats — определяет, нужно ли включать в пакет поддержки журналы статистики.

Просмотр сведений об устройстве

  1. Подключитесь к интерфейсу PowerShell.

  2. Используйте Get-HcsApplianceInfo для получения сведений об устройстве.

    Следующий пример демонстрирует использование этого командлета:

    [10.100.10.10]: PS>Get-HcsApplianceInfo
    
    Id                            : b2044bdb-56fd-4561-a90b-407b2a67bdfc
    FriendlyName                  : DBE-NBSVFQR94S6
    Name                          : DBE-NBSVFQR94S6
    SerialNumber                  : HCS-NBSVFQR94S6
    DeviceId                      : 40d7288d-cd28-481d-a1ea-87ba9e71ca6b
    Model                         : Virtual
    FriendlySoftwareVersion       : Data Box Gateway 1902
    HcsVersion                    : 1.4.771.324
    IsClustered                   : False
    IsVirtual                     : True
    LocalCapacityInMb             : 1964992
    SystemState                   : Initialized
    SystemStatus                  : Normal
    Type                          : DataBoxGateway
    CloudReadRateBytesPerSec      : 0
    CloudWriteRateBytesPerSec     : 0
    IsInitialPasswordSet          : True
    FriendlySoftwareVersionNumber : 1902
    UploadPolicy                  : All
    DataDiskResiliencySettingName : Simple
    ApplianceTypeFriendlyName     : Data Box Gateway
    IsRegistered                  : False
    

    Ниже приведена таблица со сводкой некоторых важных сведений об устройстве.

    Параметр Описание
    Понятное имя Понятное имя устройства, настроенное в локальном пользовательском интерфейсе во время развертывания устройства. В качестве понятного имени по умолчанию используется серийный номер устройства.
    SerialNumber Серийный номер устройства — это уникальный номер, присвоенный на фабрике.
    Модель Модель для устройства Azure Stack Edge или Шлюза Data Box. Модель является физической для Azure Stack Edge и виртуальной для Шлюза Data Box.
    FriendlySoftwareVersion Понятная строка, соответствующая версии программного обеспечения устройства. Для системы, в которой используется предварительная версия, понятным программным обеспечением будет Data Box Edge 1902.
    HcsVersion Версия программного обеспечения HCS, работающего на устройстве. Например, версия программного обеспечения HCS, соответствующая Data Box Edge 1902, — 1.4.771.324.
    LocalCapacityInMb Общая локальная емкость устройства в мегабитах.
    IsRegistered Это значение указывает, активировано ли устройство в службе.

Просмотр сведений о драйвере GPU

Если на устройстве настроена роль вычислений, можно также получить сведения о драйвере GPU с помощью интерфейса PowerShell.

  1. Подключитесь к интерфейсу PowerShell.

  2. Используйте команду Get-HcsGpuNvidiaSmi для получения сведений о драйвере GPU.

    Следующий пример демонстрирует использование этого командлета:

    Get-HcsGpuNvidiaSmi
    

    Запишите сведения о драйвере из примера выходных данных этого командлета.

    +-----------------------------------------------------------------------------+    
    | NVIDIA-SMI 440.64.00    Driver Version: 440.64.00    CUDA Version: 10.2     |    
    |-------------------------------+----------------------+----------------------+    
    | GPU  Name        Persistence-M| Bus-Id        Disp.A | Volatile Uncorr. ECC |    
    | Fan  Temp  Perf  Pwr:Usage/Cap|         Memory-Usage | GPU-Util  Compute M. |    
    |===============================+======================+======================|    
    |   0  Tesla T4            On   | 000029CE:00:00.0 Off |                    0 |    
    | N/A   60C    P0    29W /  70W |   1539MiB / 15109MiB |      0%      Default |    
    +-------------------------------+----------------------+----------------------+    
    |   1  Tesla T4           On  | 0000AD50:00:00.0 Off |                    0 |
    | N/A   58C    P0    29W /  70W |    330MiB / 15109MiB |      0%      Default |
    +-------------------------------+----------------------+----------------------+
    

Включение службы для нескольких процессов (MPS)

Служба для нескольких процессов (MPS) в GPU от Nvidia формирует механизм, в котором GPU могут использоваться несколькими заданиями, причем для каждого из них выделяется определенная доля ресурсов GPU. MPS — это предварительная версия функции на устройстве Azure Stack Edge Pro с GPU. Чтобы включить MPS на устройстве, выполните указанные ниже действия.

  1. Перед тем как начать, убедитесь в следующем.

    1. Вы настроили и активировали свое устройство Azure Stack Edge Pro с помощью ресурса Azure Stack Edge в Azure.
    2. Вы настроили вычисление для этого устройства на портале Microsoft Azure.
  2. Подключитесь к интерфейсу PowerShell.

  3. Используйте следующую команду, чтобы включить MPS на своем устройстве.

    Start-HcsGpuMPS
    

Примечание.

При обновлении программного обеспечения устройства и кластера Kubernetes параметр MPS не сохраняется для рабочих нагрузок. Вам потребуется заново включить MPS.

Сброс устройства

Чтобы сбросить настройки устройства, необходимо безопасно очистить все данные на диске данных и загрузочном диске устройства.

Чтобы очистить загрузочный диск и диски данных либо только диск данных, используйте командлет Reset-HcsAppliance. SecureWipeDataDisks И SecureWipeBootDisk переключатели позволяют очистить загрузочный диск и диски данных соответственно.

Параметр SecureWipeBootDisk позволяет очистить загрузочный диск, после чего устройство станет непригодным для использования. Этот параметр следует применять, только если вы собираетесь вернуть устройство в Майкрософт. Дополнительные сведения см. в статье о возврате устройства в Майкрософт.

Если воспользоваться сбросом настроек устройства в локальном пользовательском веб-интерфейсе, безопасно очистятся только диски данных, но загрузочный диск останется нетронутым. На загрузочном диске содержится конфигурация устройства.

  1. Подключитесь к интерфейсу PowerShell.

  2. В командной строке введите:

    Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks

    В следующем примере показано, как использовать этот командлет.

    [10.128.24.33]: PS>Reset-HcsAppliance -SecureWipeBootDisk -SecureWipeDataDisks
    
    Confirm
    Are you sure you want to perform this action?
    Performing the operation "Reset-HcsAppliance" on target "ShouldProcess appliance".
    [Y] Yes  [A] Yes to All  [N] No  [L] No to All  [?] Help (default is "Y"): N
    

Получение журналов вычислений

Если на устройстве настроена роль вычислений, можно также получить журналы вычислений с помощью интерфейса PowerShell.

  1. Подключитесь к интерфейсу PowerShell.

  2. Используйте команду Get-AzureDataBoxEdgeComputeRoleLogs, чтобы получить журналы вычислений для устройства.

    Следующий пример демонстрирует использование этого командлета:

    Get-AzureDataBoxEdgeComputeRoleLogs -Path "\\hcsfs\logs\myacct" -Credential "username" -FullLogCollection    
    

    Вот описание параметров этого командлета.

    • Path: указание сетевого пути к общей папке, где нужно создать пакет журнала вычислений.
    • Credential: указание имени пользователя для сетевой папки. При выполнении этого командлета необходимо будет указать пароль для общей папки.
    • FullLogCollection: этот параметр обеспечивает включение в пакет журнала всех журналов вычислений. По умолчанию пакет журналов содержит только некоторое количество журналов.

Изменение профилей рабочей нагрузки Kubernetes

После формирования и настройки кластера и создания новых виртуальных коммутаторов можно добавлять или удалять виртуальные сети, связанные с виртуальными коммутаторами. Подробные инструкции см. в разделе "Настройка виртуальных коммутаторов".

После создания виртуальных коммутаторов можно включить коммутаторы для вычислительного трафика Kubernetes, чтобы указать профиль рабочей нагрузки Kubernetes. Чтобы сделать это с помощью локального пользовательского интерфейса, выполните действия, описанные в разделе "Настройка IPS вычислений". Чтобы сделать это с помощью PowerShell, выполните следующие действия.

  1. Подключитесь к интерфейсу PowerShell.

  2. Get-HcsApplianceInfo Используйте командлет, чтобы получить текущие KubernetesPlatform и KubernetesWorkloadProfile параметры для устройства.

  3. Get-HcsKubernetesWorkloadProfiles Используйте командлет, чтобы определить профили, доступные на устройстве Azure Stack Edge.

    [Device-IP]: PS>Get-HcsKubernetesWorkloadProfiles 
    Type  Description    
    ----  -----------   
    AP5GC an Azure Private MEC solution   
    SAP   a SAP Digital Manufacturing for Edge Computing or another Microsoft partner solution   
    NONE  other workloads
    [Device-IP]: PS>
    
  4. Set-HcsKubernetesWorkloadProfile Используйте командлет, чтобы задать профиль рабочей нагрузки для AP5GC, решение Azure Private MEC.

    Следующий пример демонстрирует использование этого командлета:

    Set-HcsKubernetesWorkloadProfile -Type "AP5GC"
    

    Ниже приведен пример выходных данных для этого командлета:

    [10.100.10.10]: PS>KubernetesPlatform : AKS
    [10.100.10.10]: PS>KubernetesWorkloadProfile : AP5GC
    [10.100.10.10]: PS>
    

Изменение подсетей службы и модуля pod Kubernetes

Если вы используете другие рабочие нагрузки в вашей среде, по умолчанию Kubernetes на устройстве Azure Stack Edge использует подсети 172.27.0.0/16 и 172.28.0.0/16 для pod и служб соответственно. Если эти подсети уже используются в вашей сети, их можно изменить с помощью командлета Set-HcsKubeClusterNetworkInfo.

Настроить эти параметры следует до настройки вычислений на портале Azure, так как на этом этапе создается кластер Kubernetes.

  1. Подключитесь к интерфейсу PowerShell на устройстве.

  2. В интерфейсе PowerShell на устройстве введите следующую команду:

    Set-HcsKubeClusterNetworkInfo -PodSubnet <subnet details> -ServiceSubnet <subnet details>

    Замените <сведения о> подсети диапазоном подсети, который вы хотите использовать.

  3. После выполнения этой команды можно ввести команду Get-HcsKubeClusterNetworkInfo, чтобы убедиться, что подсети для модуля pod и службы изменились.

Ниже приведен пример результата выполнения этой команды.

[10.100.10.10]: PS>Set-HcsKubeClusterNetworkInfo -PodSubnet 10.96.0.1/16 -ServiceSubnet 10.97.0.1/16
[10.100.10.10]: PS>Get-HcsKubeClusterNetworkInfo

Id                                   PodSubnet    ServiceSubnet
--                                   ---------    -------------
6dbf23c3-f146-4d57-bdfc-76cad714cfd1 10.96.0.1/16 10.97.0.1/16
[10.100.10.10]: PS>

Перед началом работы убедитесь, что у вас есть перечисленные ниже ресурсы.

Если на устройстве Azure Stack Edge Pro с GPU настроена роль вычислений, вы можете устранять неполадки и наблюдать за устройством, используя два разных наборы команд.

  • Использование команд iotedge. Эти команды доступны для базовых операций с устройством.
  • Использование команд kubectl. Эти команды доступны для обширного набора операций с устройством.

Чтобы выполнить любой из приведенных выше наборов команд, необходимо подключиться к интерфейсу PowerShell.

Использование команд iotedge

Чтобы просмотреть список доступных команд, подключитесь к интерфейсу PowerShell и используйте функцию iotedge.

[10.100.10.10]: PS>iotedge -?                                                                                                                           
Usage: iotedge COMMAND

Commands:
   list
   logs
   restart

[10.100.10.10]: PS>

Следующая таблица содержит краткое описание команд, доступных для iotedge.

Команда Description
list Вывод списка модулей
logs Получение журналов модуля
restart Остановка и перезапуск модуля

Получение списка всех модулей IoT Edge

Чтобы получить список всех модулей, запущенных на устройстве, используйте команду iotedge list.

Ниже приведен пример результата выполнения этой команды. Эта команда возвращает список всех модулей, соответствующих конфигураций и внешних IP-адресов, связанных с модулями. Например, приложение webserver доступно по адресу https://10.128.44.244.

[10.100.10.10]: PS>iotedge list

NAME                   STATUS  DESCRIPTION CONFIG                                             EXTERNAL-IP
----                   ------  ----------- ------                                             -----
gettingstartedwithgpus Running Up 10 days  mcr.microsoft.com/intelligentedge/solutions:latest
iotedged               Running Up 10 days  azureiotedge/azureiotedge-iotedged:0.1.0-beta10    <none>
edgehub                Running Up 10 days  mcr.microsoft.com/azureiotedge-hub:1.0             10.128.44.243
edgeagent              Running Up 10 days  azureiotedge/azureiotedge-agent:0.1.0-beta10
webserverapp           Running Up 10 days  nginx:stable                                       10.128.44.244

[10.100.10.10]: PS>

Перезапуск модулей

С помощью команды list можно получить список всех модулей, запущенных на устройстве. Затем определите имя модуля, который требуется перезапустить, и укажите его в команде restart.

Ниже приведен пример выходных данных для перезапуска модуля. Судя по указанному времени работы модуля cuda-sample1, он был перезапущен.

[10.100.10.10]: PS>iotedge list

NAME         STATUS  DESCRIPTION CONFIG                                          EXTERNAL-IP PORT(S)
----         ------  ----------- ------                                          ----------- -------
edgehub      Running Up 5 days   mcr.microsoft.com/azureiotedge-hub:1.0          10.57.48.62 443:31457/TCP,5671:308
                                                                                             81/TCP,8883:31753/TCP
iotedged     Running Up 7 days   azureiotedge/azureiotedge-iotedged:0.1.0-beta13 <none>      35000/TCP,35001/TCP
cuda-sample2 Running Up 1 days   nvidia/samples:nbody
edgeagent    Running Up 7 days   azureiotedge/azureiotedge-agent:0.1.0-beta13
cuda-sample1 Running Up 1 days   nvidia/samples:nbody

[10.100.10.10]: PS>iotedge restart cuda-sample1
[10.100.10.10]: PS>iotedge list

NAME         STATUS  DESCRIPTION  CONFIG                                          EXTERNAL-IP PORT(S)
----         ------  -----------  ------                                          ----------- -------
edgehub      Running Up 5 days    mcr.microsoft.com/azureiotedge-hub:1.0          10.57.48.62 443:31457/TCP,5671:30
                                                                                              881/TCP,8883:31753/TC
                                                                                              P
iotedged     Running Up 7 days    azureiotedge/azureiotedge-iotedged:0.1.0-beta13 <none>      35000/TCP,35001/TCP
cuda-sample2 Running Up 1 days    nvidia/samples:nbody
edgeagent    Running Up 7 days    azureiotedge/azureiotedge-agent:0.1.0-beta13
cuda-sample1 Running Up 4 minutes nvidia/samples:nbody

[10.100.10.10]: PS>

Получение журналов модулей

С помощью команды logs можно получить журналы для любого модуля IoT Edge, запущенного на устройстве.

Если при создании образа контейнера или при извлечении образа возникла ошибка, выполните команду logs edgeagent. edgeagent — контейнер среды выполнения IoT Edge, отвечающий за подготовку других контейнеров. Поскольку logs edgeagent выводит дампы всех журналов, для просмотра последних ошибок удобно использовать параметр --tail 0`.

Вот пример вывода.

[10.100.10.10]: PS>iotedge logs cuda-sample2 --tail 10
[10.100.10.10]: PS>iotedge logs edgeagent --tail 10
<6> 2021-02-25 00:52:54.828 +00:00 [INF] - Executing command: "Report EdgeDeployment status: [Success]"
<6> 2021-02-25 00:52:54.829 +00:00 [INF] - Plan execution ended for deployment 11
<6> 2021-02-25 00:53:00.191 +00:00 [INF] - Plan execution started for deployment 11
<6> 2021-02-25 00:53:00.191 +00:00 [INF] - Executing command: "Create an EdgeDeployment with modules: [cuda-sample2, edgeAgent, edgeHub, cuda-sample1]"
<6> 2021-02-25 00:53:00.212 +00:00 [INF] - Executing command: "Report EdgeDeployment status: [Success]"
<6> 2021-02-25 00:53:00.212 +00:00 [INF] - Plan execution ended for deployment 11
<6> 2021-02-25 00:53:05.319 +00:00 [INF] - Plan execution started for deployment 11
<6> 2021-02-25 00:53:05.319 +00:00 [INF] - Executing command: "Create an EdgeDeployment with modules: [cuda-sample2, edgeAgent, edgeHub, cuda-sample1]"
<6> 2021-02-25 00:53:05.412 +00:00 [INF] - Executing command: "Report EdgeDeployment status: [Success]"
<6> 2021-02-25 00:53:05.412 +00:00 [INF] - Plan execution ended for deployment 11
[10.100.10.10]: PS>

Примечание.

Прямые методы, такие как GetModuleLogs или UploadModuleLogs, не поддерживаются в IoT Edge в Kubernetes на Azure Stack Edge.

Использование команд kubectl

На устройстве Azure Stack Edge Pro с GPU, для которого настроена роль вычислений, доступны все команды kubectl для мониторинга и устранения неполадок модулей. Чтобы получить список доступных команд, введите kubectl --help в окне командной строки.

C:\Users\myuser>kubectl --help

kubectl controls the Kubernetes cluster manager.

Find more information at: https://kubernetes.io/docs/reference/kubectl/overview/

Basic Commands (Beginner):
    create         Create a resource from a file or from stdin.
    expose         Take a replication controller, service, deployment or pod and expose it as a new Kubernetes Service
    run            Run a particular image on the cluster
    set            Set specific features on objects
    run-container  Run a particular image on the cluster. This command is deprecated, use "run" instead
==============CUT=============CUT============CUT========================

Usage:
    kubectl [flags] [options]

Use "kubectl <command> --help" for more information about a given command.
Use "kubectl options" for a list of global command-line options (applies to all commands).

C:\Users\myuser>

Полный список команд kubectl представлен в памятке по kubectl.

Получение IP-адреса службы или модуля, доступных за пределами кластера Kubernetes

Чтобы получить IP-адрес службы балансировки нагрузки или модулей, доступных за пределами Kubernetes, введите следующую команду:

kubectl get svc -n iotedge

Ниже представлен пример выходных данных для всех служб и модулей, доступных за пределами кластера Kubernetes.

[10.100.10.10]: PS>kubectl get svc -n iotedge
NAME           TYPE           CLUSTER-IP      EXTERNAL-IP     PORT(S)                                       AGE
edgehub        LoadBalancer   10.103.52.225   10.128.44.243   443:31987/TCP,5671:32336/TCP,8883:30618/TCP   34h
iotedged       ClusterIP      10.107.236.20   <none>          35000/TCP,35001/TCP                           3d8h
webserverapp   LoadBalancer   10.105.186.35   10.128.44.244   8080:30976/TCP                                16h

[10.100.10.10]: PS>

Адрес в столбце “Внешний IP-адрес” соответствует внешней конечной точке службы или модуля. Вы также можете получить внешний IP-адрес на панели мониторинга Kubernetes.

Проверка успешности развертывания модуля

Модули вычислений — это контейнеры, в которых реализована бизнес-логика. В модуле pod Kubernetes могут работать несколько контейнеров.

Чтобы проверить, удалось ли развернуть модуль вычислений, подключитесь к интерфейсу PowerShell на устройстве. Введите команду get pods и проверьте, запущен ли контейнер, соответствующий модулю выполнения.

Чтобы получить список всех модулей pod, запущенных в определенном пространстве имен, введите следующую команду:

get pods -n <namespace>

Чтобы проверить модули, развернутые с помощью IoT Edge, введите следующую команду:

get pods -n iotedge

Ниже приведен пример выходных данных для всех модулей pod, запущенных в пространстве имен iotedge.

[10.100.10.10]: PS>kubectl get pods -n iotedge
NAME                        READY   STATUS    RESTARTS   AGE
edgeagent-cf6d4ffd4-q5l2k   2/2     Running   0          20h
edgehub-8c9dc8788-2mvwv     2/2     Running   0          56m
filemove-66c49984b7-h8lxc   2/2     Running   0          56m
iotedged-675d7f4b5f-9nml4   1/1     Running   0          20h

[10.100.10.10]: PS>

Состояние указывает, что все модули pod в пространстве имен запущены, а значение Готовые обозначает количество контейнеров, развернутых в модуле pod. В предыдущем примере запущены все модули pod и все дочерние модули, развернутые в каждом из них.

Чтобы проверить модули, развернутые с помощью Azure Arc, введите следующую команду:

get pods -n azure-arc

Вы также можете подключиться к панели мониторинга Kubernetes для просмотра сведений о развертываниях IoT Edge и Azure Arc.

Для получения более подробных сведений об определенном модуле pod для того или иного пространства имен можно использовать следующую команду:

kubectl describe pod <pod name> -n <namespace>

Ниже показан пример выходных данных.

[10.100.10.10]: PS>kubectl describe pod filemove-66c49984b7 -n iotedge
Name:           filemove-66c49984b7-h8lxc
Namespace:      iotedge
Priority:       0
Node:           k8s-1hwf613cl-1hwf613/10.139.218.12
Start Time:     Thu, 14 May 2020 12:46:28 -0700
Labels:         net.azure-devices.edge.deviceid=myasegpu-edge
                net.azure-devices.edge.hub=myasegpu2iothub.azure-devices.net
                net.azure-devices.edge.module=filemove
                pod-template-hash=66c49984b7
Annotations:    net.azure-devices.edge.original-moduleid: filemove
Status:         Running
IP:             172.17.75.81
IPs:            <none>
Controlled By:  ReplicaSet/filemove-66c49984b7
Containers:
    proxy:
    Container ID:   docker://fd7975ca78209a633a1f314631042a0892a833b7e942db2e7708b41f03e8daaf
    Image:          azureiotedge/azureiotedge-proxy:0.1.0-beta8
    Image ID:       docker://sha256:5efbf6238f13d24bab9a2b499e5e05bc0c33ab1587d6cf6f289cdbe7aa667563
    Port:           <none>
    Host Port:      <none>
    State:          Running
        Started:      Thu, 14 May 2020 12:46:30 -0700
    Ready:          True
    Restart Count:  0
    Environment:
        PROXY_LOG:  Debug
=============CUT===============================CUT===========================
Volumes:
    config-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      iotedged-proxy-config
    Optional:  false
    trust-bundle-volume:
    Type:      ConfigMap (a volume populated by a ConfigMap)
    Name:      iotedged-proxy-trust-bundle
    Optional:  false
    myasesmb1local:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  myasesmb1local
    ReadOnly:   false
    myasesmb1:
    Type:       PersistentVolumeClaim (a reference to a PersistentVolumeClaim in the same namespace)
    ClaimName:  myasesmb1
    ReadOnly:   false
    filemove-token-pzvw8:
    Type:        Secret (a volume populated by a Secret)
    SecretName:  filemove-token-pzvw8
    Optional:    false
QoS Class:       BestEffort
Node-Selectors:  <none>
Tolerations:     node.kubernetes.io/not-ready:NoExecute for 300s
                    node.kubernetes.io/unreachable:NoExecute for 300s
Events:          <none>


[10.100.10.10]: PS>

Получение журналов контейнера

Чтобы получить журналы для модуля, введите следующую команду в интерфейсе PowerShell на устройстве:

kubectl logs <pod_name> -n <namespace> --all-containers

Поскольку флаг all-containers возвращает дампы всех журналов для всех контейнеров, для просмотра последних ошибок удобно использовать параметр --tail 10.

Ниже приведен пример выходных данных.

[10.100.10.10]: PS>kubectl logs filemove-66c49984b7-h8lxc -n iotedge --all-containers --tail 10
DEBUG 2020-05-14T20:40:42Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 1 events, 0.000s
DEBUG 2020-05-14T20:40:44Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:12Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 0 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 1 events, 0.000s
DEBUG 2020-05-14T20:42:14Z: loop process - 0 events, 0.000s
05/14/2020 19:46:44: Info: Opening module client connection.
05/14/2020 19:46:45: Info: Open done.
05/14/2020 19:46:45: Info: Initializing with input: /home/input, output: /home/output, protocol: Amqp.
05/14/2020 19:46:45: Info: IoT Hub module client initialized.

[10.100.10.10]: PS>

Изменение ограничений памяти и процессора для рабочего узла Kubernetes

Чтобы изменить ограничения памяти или процессора для рабочего узла Kubernetes, выполните указанные ниже действия.

  1. Подключитесь к интерфейсу PowerShell на устройстве.

  2. Чтобы получить сведения о текущих ресурсах для рабочего узла и параметрах ролей, введите следующую команду:

    Get-AzureDataBoxEdgeRole

    Вот пример вывода. Обратите внимание на значения Name и Compute в разделе Resources. Значения MemoryInBytes и ProcessorCount указывают текущий объем памяти и количество ядер процессора для рабочего узла Kubernetes.

    [10.100.10.10]: PS>Get-AzureDataBoxEdgeRole
    ImageDetail                : Name:mcr.microsoft.com/azureiotedge-agent
                                 Tag:1.0
                                 PlatformType:Linux
    EdgeDeviceConnectionString :
    IotDeviceConnectionString  :
    HubHostName                : ase-srp-007.azure-devices.net
    IotDeviceId                : srp-007-storagegateway
    EdgeDeviceId               : srp-007-edge
    Version                    :
    Id                         : 6ebeff9f-84c5-49a7-890c-f5e05520a506
    Name                       : IotRole
    Type                       : IOT
    Resources                  : Compute:
                                 MemoryInBytes:34359738368
                                 ProcessorCount:12
                                 VMProfile:
    
                                 Storage:
                                 EndpointMap:
                                 EndpointId:c0721210-23c2-4d16-bca6-c80e171a0781
                                 TargetPath:mysmbedgecloudshare1
                                 Name:mysmbedgecloudshare1
                                 Protocol:SMB
    
                                 EndpointId:6557c3b6-d3c5-4f94-aaa0-6b7313ab5c74
                                 TargetPath:mysmbedgelocalshare
                                 Name:mysmbedgelocalshare
                                 Protocol:SMB
                                 RootFileSystemStorageSizeInBytes:0
    
    HostPlatform               : KubernetesCluster
    State                      : Created
    PlatformType               : Linux
    HostPlatformInstanceId     : 994632cb-853e-41c5-a9cd-05b36ddbb190
    IsHostPlatformOwner        : True
    IsCreated                  : True    
    [10.100.10.10]: PS>
    
  3. Чтобы изменить эти значения для рабочего узла, введите следующую команду:

    Set-AzureDataBoxEdgeRoleCompute -Name <Name value from the output of Get-AzureDataBoxEdgeRole> -Memory <Value in Bytes> -ProcessorCount <No. of cores>
    

    Вот пример вывода.

    [10.100.10.10]: PS>Set-AzureDataBoxEdgeRoleCompute -Name IotRole -MemoryInBytes 32GB -ProcessorCount 16
    
    ImageDetail                : Name:mcr.microsoft.com/azureiotedge-agent
                                 Tag:1.0
                                 PlatformType:Linux
    
    EdgeDeviceConnectionString :
    IotDeviceConnectionString  :
    HubHostName                : ase-srp-007.azure-devices.net
    IotDeviceId                : srp-007-storagegateway
    EdgeDeviceId               : srp-007-edge
    Version                    :
    Id                         : 6ebeff9f-84c5-49a7-890c-f5e05520a506
    Name                       : IotRole
    Type                       : IOT
    Resources                  : Compute:
                                 MemoryInBytes:34359738368
                                 ProcessorCount:16
                                 VMProfile:
    
                                 Storage:
                                 EndpointMap:
                                 EndpointId:c0721210-23c2-4d16-bca6-c80e171a0781
                                 TargetPath:mysmbedgecloudshare1
                                 Name:mysmbedgecloudshare1
                                 Protocol:SMB
    
                                 EndpointId:6557c3b6-d3c5-4f94-aaa0-6b7313ab5c74
                                 TargetPath:mysmbedgelocalshare
                                 Name:mysmbedgelocalshare
                                 Protocol:SMB
    
                                 RootFileSystemStorageSizeInBytes:0
    
    HostPlatform               : KubernetesCluster
    State                      : Created
    PlatformType               : Linux
    HostPlatformInstanceId     : 994632cb-853e-41c5-a9cd-05b36ddbb190
    IsHostPlatformOwner        : True
    IsCreated                  : True
    
    [10.100.10.10]: PS>    
    

Меняя параметры использования памяти и процессора, соблюдайте изложенные ниже рекомендации.

  • Объем памяти по умолчанию составляет 25 % от номинального.
  • Количество ядер процессора по умолчанию составляет 30 % от номинального.
  • При изменении объема памяти и количества ядер процессора рекомендуем варьировать значения в пределах от 15 % до 60 % от номинальных.
  • Рекомендуемый верхний предел составляет 60 %, чтобы оставалось достаточно ресурсов для работы системных компонентов.

Подключение к BMC

Примечание.

Контроллер управления базовой платой (BMC) недоступен в Azure Stack Edge Pro 2 и Azure Stack Edge Mini R. Командлеты, описанные в этом разделе, применяются только к GPU Azure Stack Edge Pro и Azure Stack Edge Pro R.

BMC используется для удаленного мониторинга и управления устройством. В этом разделе описываются командлеты, с помощью которых можно управлять конфигурацией BMC. Прежде чем вводить какие-либо командлеты, подключитесь к интерфейсу PowerShell на устройстве.

  • Get-HcsNetBmcInterface: с помощью этого командлета можно получить свойства сетевой конфигурации BMC, например IPv4Address, IPv4Gateway, IPv4SubnetMask и DhcpEnabled.

    Пример выходных данных:

    [10.100.10.10]: PS>Get-HcsNetBmcInterface
    IPv4Address   IPv4Gateway IPv4SubnetMask DhcpEnabled
    -----------   ----------- -------------- -----------
    10.128.53.186 10.128.52.1 255.255.252.0        False
    [10.100.10.10]: PS>
    
  • Set-HcsNetBmcInterface: этот командлет можно использовать двумя способами.

    • Этот командлет дает возможность включить или отключить конфигурацию DHCP для BMC, указав соответствующее значение параметра UseDhcp.

      Set-HcsNetBmcInterface -UseDhcp $true
      

      Пример выходных данных:

      [10.100.10.10]: PS>Set-HcsNetBmcInterface -UseDhcp $true
      [10.100.10.10]: PS>Get-HcsNetBmcInterface
      IPv4Address IPv4Gateway IPv4SubnetMask DhcpEnabled
      ----------- ----------- -------------- -----------
      10.128.54.8 10.128.52.1 255.255.252.0         True
      [10.100.10.10]: PS>
      
    • С помощью этого командлета можно настроить статическую конфигурацию BMC. Допустимые значения: IPv4Address, IPv4Gateway и IPv4SubnetMask.

      Set-HcsNetBmcInterface -IPv4Address "<IPv4 address of the device>" -IPv4Gateway "<IPv4 address of the gateway>" -IPv4SubnetMask "<IPv4 address for the subnet mask>"
      

      Пример выходных данных:

      [10.100.10.10]: PS>Set-HcsNetBmcInterface -IPv4Address 10.128.53.186 -IPv4Gateway 10.128.52.1 -IPv4SubnetMask 255.255.252.0
      [10.100.10.10]: PS>Get-HcsNetBmcInterface
      IPv4Address   IPv4Gateway IPv4SubnetMask DhcpEnabled
      -----------   ----------- -------------- -----------
      10.128.53.186 10.128.52.1 255.255.252.0        False
      [10.100.10.10]: PS>
      
  • Set-HcsBmcPassword: с помощью этого командлета можно изменить пароль BMC для EdgeUser. В имени пользователя (EdgeUser) учитывается регистр.

    Пример выходных данных:

    [10.100.10.10]: PS> Set-HcsBmcPassword -NewPassword "Password1"
    [10.100.10.10]: PS>
    

Выход из удаленного сеанса

Чтобы выйти из удаленного сеанса PowerShell, закройте окно PowerShell.

Следующие шаги