Delen via


Edge-containerregister inschakelen op uw Azure Stack Edge Pro GPU-apparaat

VAN TOEPASSING OP: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

In dit artikel wordt beschreven hoe u het Edge-containerregister inschakelt en gebruikt vanuit het Kubernetes-cluster op uw Azure Stack Edge Pro-apparaat. In het voorbeeld dat in het artikel wordt gebruikt, wordt beschreven hoe u een installatiekopieën pusht vanuit een bronregister, in dit geval Microsoft Container Registry, naar het register op het Azure Stack Edge-apparaat, het Edge-containerregister.

Over Edge-containerregister

In containers geplaatste rekentoepassingen worden uitgevoerd op containerinstallatiekopieën en deze installatiekopieën worden opgeslagen in registers. Registers kunnen openbaar zijn, zoals Docker Hub, privé of cloudprovider die wordt beheerd, zoals Azure Container Registry. Zie Voor meer informatie over registers, opslagplaatsen en installatiekopieën.

Een Edge-containerregister biedt een opslagplaats aan de Edge, op uw Azure Stack Edge Pro-apparaat. U kunt dit register gebruiken om uw persoonlijke containerinstallatiekopieën op te slaan en te beheren.

In een omgeving met meerdere knooppunten kunnen containerinstallatiekopieën eenmaal worden gedownload en gepusht naar het Edge-containerregister. Alle Edge-toepassingen kunnen het Edge-containerregister gebruiken voor volgende implementaties.

Vereisten

Zorg voordat u begint voor het volgende:

  1. U hebt toegang tot een Azure Stack Edge Pro-apparaat.

  2. U hebt het Azure Stack Edge Pro-apparaat geactiveerd zoals beschreven in Azure Stack Edge Pro activeren.

  3. U hebt de rekenrol op het apparaat ingeschakeld. Er is ook een Kubernetes-cluster op het apparaat gemaakt toen u rekenkracht op het apparaat hebt geconfigureerd volgens de instructies in Rekenproces configureren op uw Azure Stack Edge Pro-apparaat.

  4. U hebt het Kubernetes-API-eindpunt op de apparaatpagina van uw lokale webgebruikersinterface. Zie de instructies in het Eindpunt kubernetes-API ophalen voor meer informatie.

  5. U hebt toegang tot een clientsysteem met een ondersteund besturingssysteem. Als u een Windows-client gebruikt, moet het systeem PowerShell 5.0 of hoger uitvoeren om toegang te krijgen tot het apparaat.

    1. Als u uw eigen containerinstallatiekopieën wilt ophalen en pushen, moet u ervoor zorgen dat op het systeem docker-client is geïnstalleerd. Als u een Windows-client gebruikt, installeert u Docker Desktop in Windows.

Containerregister inschakelen als invoegtoepassing

De eerste stap is het inschakelen van het Edge-containerregister als een invoegtoepassing.

  1. Verbinding maken naar de PowerShell-interface van het apparaat.

  2. Als u het containerregister wilt inschakelen als een invoegtoepassing, typt u:

    Set-HcsKubernetesContainerRegistry

    Deze bewerking kan enkele minuten duren.

    Hier volgt de voorbeelduitvoer van deze opdracht:

    [10.128.44.40]: PS>Set-HcsKubernetesContainerRegistry
    Operation completed successfully. Use Get-HcsKubernetesContainerRegistryInfo for credentials    
    
  3. Als u de details van het containerregister wilt ophalen, typt u:

    Get-HcsKubernetesContainerRegistryInfo

    Dit is het voorbeeld van deze opdracht:

    [10.128.44.40]: PS> Get-HcsKubernetesContainerRegistryInfo
    
    Endpoint                                   IPAddress    Username     Password
    --------                                   ---------    --------     --------
    ecr.dbe-hw6h1t2.microsoftdatabox.com:31001 10.128.44.41 ase-ecr-user i3eTsU4zGYyIgxV
    
  4. Noteer de gebruikersnaam en het wachtwoord uit de uitvoer van Get-HcsKubernetesContainerRegistryInfo. Deze referenties worden gebruikt om u aan te melden bij het Edge-containerregister tijdens het pushen van installatiekopieën.

Containerregisterinstallatiekopieën beheren

Mogelijk wilt u toegang krijgen tot het containerregister van buiten uw Azure Stack Edge-apparaat. U kunt ook installatiekopieën in het register pushen of ophalen.

Volg deze stappen voor toegang tot het Edge-containerregister:

  1. Haal de eindpuntdetails voor het Edge-containerregister op.

    1. Ga in de lokale gebruikersinterface van het apparaat naar Apparaat.

    2. Zoek het eindpunt van het Edge-containerregister. Edge container registry endpoint on Device page

    3. Kopieer dit eindpunt en maak een bijbehorende DNS-vermelding in het C:\Windows\System32\Drivers\etc\hosts bestand van uw client om verbinding te maken met het edge-containerregistereindpunt.

      <IP-adres van het eindpunt van het Edge-containerregister van Kubernetes><>

      Add DNS entry for Edge container registry endpoint

  2. Download het Edge-containerregistercertificaat uit de lokale gebruikersinterface.

    1. Ga in de lokale gebruikersinterface van het apparaat naar Certificaten.

    2. Zoek de vermelding voor het Edge-containerregistercertificaat. Selecteer rechts van deze vermelding het certificaat downloaden om het Edge-containerregistercertificaat te downloaden op uw clientsysteem dat u gebruikt voor toegang tot uw apparaat.

      Download Edge container registry endpoint certificate

  3. Installeer het gedownloade certificaat op de client. Als u een Windows-client gebruikt, voert u de volgende stappen uit:

    1. Selecteer het certificaat en selecteer in de wizard Certificaat importeren de opslaglocatie als lokale computer.

      Install certificate 1

    2. Installeer het certificaat op uw lokale computer in het vertrouwde basisarchief.

      Install certificate 2

  4. Nadat het certificaat is geïnstalleerd, start u de Docker-client op uw systeem opnieuw op.

  5. Meld u aan bij het Edge-containerregister. Type:

    docker login <Edge container registry endpoint> -u <username> -p <password>

    Geef het edge-containerregistereindpunt op vanaf de pagina Apparaten en de gebruikersnaam en het wachtwoord die u hebt verkregen uit de uitvoer van Get-HcsKubernetesContainerRegistryInfo.

  6. Gebruik docker-push- of pull-opdrachten om containerinstallatiekopieën uit het containerregister te pushen of op te halen.

    1. Haal een installatiekopie op uit de Microsoft Container Registry-installatiekopie. Type:

      docker pull <Full path to the container image in the Microsoft Container Registry>

    2. Maak een alias van de installatiekopie die u hebt opgehaald met het volledig gekwalificeerde pad naar uw register.

      docker tag <Path to the image in the Microsoft container registry> <Path to the image in the Edge container registry/Image name with tag>

    3. Push de installatiekopieën naar uw register.

      docker push <Path to the image in the Edge container registry/Image name with tag>

    4. Voer de installatiekopieën uit die u naar het register hebt gepusht.

      docker run -it --rm -p 8080:80 <Path to the image in the Edge container registry/Image name with tag>

      Hier volgt een voorbeelduitvoer van de pull- en pushopdrachten:

      PS C:\WINDOWS\system32> docker login ecr.dbe-hw6h1t2.microsoftdatabox.com:31001 -u ase-ecr-user -p 3bbo2sOtDe8FouD
      WARNING! Using --password via the CLI is insecure. Use --password-stdin.
      Login Succeeded
      PS C:\WINDOWS\system32> docker pull mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine
      1.17.5-alpine: Pulling from oss/nginx/nginx
      Digest: sha256:5466bbc0a989bd1cd283c0ba86d9c2fc133491ccfaea63160089f47b32ae973b
      Status: Image is up to date for mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine
      mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine
      PS C:\WINDOWS\system32> docker tag mcr.microsoft.com/oss/nginx/nginx:1.17.5-alpine ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
      PS C:\WINDOWS\system32> docker push ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
      The push refers to repository [ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx]
      bba7d2385bc1: Pushed
      77cae8ab23bf: Pushed
      2.0: digest: sha256:b4c0378c841cd76f0b75bc63454bfc6fe194a5220d4eab0d75963bccdbc327ff size: 739
      PS C:\WINDOWS\system32> docker run -it --rm -p 8080:80 ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
      2020/11/10 00:00:49 [error] 6#6: *1 open() "/usr/share/nginx/html/favicon.ico" failed (2: No such file or directory), client: 172.17.0.1, server: localhost, request: "GET /favicon.ico HTTP/1.1", host: "localhost:8080", referrer: "http://localhost:8080/"
      172.17.0.1 - - [10/Nov/2020:00:00:49 +0000] "GET /favicon.ico HTTP/1.1" 404 555 "http://localhost:8080/" "Mozilla/5.0 (Windows NT 10.0; Win64; x64) AppleWebKit/537.36 (KHTML, like Gecko) Chrome/86.0.4240.183 Safari/537.36" "-"
      ^C
      PS C:\WINDOWS\system32>    
      
  7. Blader naar http://localhost:8080 de actieve container. In dit geval ziet u dat de nginx-webserver wordt uitgevoerd.

    View the running container

    Als u de container wilt stoppen en verwijderen, drukt u op Control+C.

Edge-containerregisterinstallatiekopieën gebruiken via Kubernetes-pods

U kunt nu de installatiekopieën implementeren die u in uw Edge-containerregister hebt gepusht vanuit de Kubernetes-pods.

  1. Als u de installatiekopieën wilt implementeren, moet u clustertoegang configureren via kubectl. Maak een naamruimte, een gebruiker, verdeel de gebruiker toegang tot de naamruimte en haal een configuratiebestand op . Zorg ervoor dat u verbinding kunt maken met de Kubernetes-pods.

    Volg alle stappen in Verbinding maken voor en beheer van een Kubernetes-cluster via kubectl op uw Azure Stack Edge Pro GPU-apparaat.

    Hier volgt een voorbeelduitvoer voor een naamruimte op uw apparaat van waaruit de gebruiker toegang heeft tot het Kubernetes-cluster.

    [10.128.44.40]: PS>New-HcsKubernetesNamespace -Namespace myecr
    [10.128.44.40]: PS>New-HcsKubernetesUser -UserName ecruser
    apiVersion: v1
    clusters:
    - cluster:
        certificate-authority-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUN5RENDQWJDZ0F3SUJBZ0lCQURBTkJna3Foa2lHOXcwQkFRc0ZBREFWTVJNd0VRWURWUVFERXdwcmRXSmwKY201bGRHVnpNQjRYRFRJd01URXdOVEF6TkRJek1Gb1hEVE13TVRFd016QXpOREl6TUZvd0ZURVRNQkVnNjOVRLWndCQ042cm1XQms2eXFwcXI1MUx6bApTaXMyTy91UEJ2YXNSSUUzdzgrbmEwdG1aTERZZ2F6MkQwMm42Q29mUmtyUTR2d1lLTnR1MlpzR3pUdz0KLS0tLS1FTkQgQ0VSVElGSUNBVEUtLS0tLQo=
        server: https://compute.dbe-hw6h1t2.microsoftdatabox.com:6443
        name: kubernetes
        ===================CUT=========================================CUT==============
        client-certificate-data: LS0tLS1CRUdJTiBDRVJUSUZJQ0FURS0tLS0tCk1JSUMwRENDQWJpZ0F3SUJBZ0lJYmVWRGJSTzZ3ell3RFFZSktvWklodmNOQVFFTEJRQXdGVEVUTUJFR0ExVUUKQXhNS2EzVmlaWEp1WlhSbGN6QWVGdzB5TURFeE1EVXdNelF5TXpCYUZ3MHlNVEV4TURreU16UTRNal
        ===================CUT=========================================CUT==============
        DMVUvN3lFOG5UU3k3b2VPWitUeHdzCjF1UDByMjhDZ1lCdHdRY0ZpcFh1blN5ak16dTNIYjhveFI2V3VWWmZldFFKNElKWEFXOStVWGhKTFhyQ2x4bUcKWHRtbCt4UU5UTzFjQVNKRVZWVDd6Tjg2ay9kSU43S3JIVkdUdUxlUDd4eGVjV2VRcWJrZEVScUsxN0liTXpiVApmbnNxc0dobEdmLzdmM21kTGtyOENrcWs5TU5aM3MvUVIwRlFCdk94ZVpuUlpTeDVGbUR5S1E9PQotLS0tLUVORCBSU0EgUFJJVkFURSBLRVktLS0tLQo=
    
    [10.128.44.40]: PS>Grant-HcsKubernetesNamespaceAccess -Namespace myecr -UserName ecruser
    [10.128.44.40]: PS>kubectl get pods -n "myecr"
    No resources found.
    PS C:\WINDOWS\system32>
    
  2. De pull-geheimen van de installatiekopie zijn al ingesteld in alle Kubernetes-naamruimten op uw apparaat. U kunt geheimen ophalen met behulp van de get secrets opdracht. Hier volgt een voorbeeld van uitvoer:

    PS C:\WINDOWS\system32> .\kubectl.exe get secrets -n myecr
    NAME                  TYPE                                  DATA   AGE
    ase-ecr-credentials   kubernetes.io/dockerconfigjson        1      99m
    default-token-c7kww   kubernetes.io/service-account-token   3      107m
    sec-smbcredentials    microsoft.com/smb                     2      99m
    PS C:\WINDOWS\system32>   
    
  3. Implementeer een pod in uw naamruimte met behulp van kubectl. Gebruik het volgende yaml.

    Vervang de installatiekopieën door <image-name> de installatiekopieën die naar het containerregister zijn gepusht. Raadpleeg de geheimen in uw naamruimten met behulp van imagePullSecrets met een naam: ase-ecr-credentials.

    apiVersion: v1
    kind: Pod
    metadata:
      name: nginx
    spec:
      containers:
      - name: nginx
        image: ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/nginx:2.0
        imagePullPolicy: Always
      imagePullSecrets:
      - name: ase-ecr-credentials
    
  4. Pas de implementatie toe in de naamruimte die u hebt gemaakt met behulp van de opdracht Apply. Controleer of de container wordt uitgevoerd. Hier volgt een voorbeeld van uitvoer:

    PS C:\Windows\System32> .\kubectl.exe apply -f .\deployment.yml -n myecr
    pod/nginx configured
    PS C:\Windows\System32> .\kubectl.exe get pods -n myecr
    NAME    READY   STATUS    RESTARTS   AGE
    nginx   1/1     Running   0          27m
    PS C:\Windows\System32>
    

Containerregisterinstallatiekopieën verwijderen

Edge Container Registry-opslag wordt gehost op een lokale share binnen uw Azure Stack Edge Pro-apparaat dat wordt beperkt door de beschikbare opslag op het apparaat. Het is uw verantwoordelijkheid om ongebruikte Docker-installatiekopieën uit het containerregister te verwijderen met behulp van Docker HTTP v2 API (https://docs.docker.com/registry/spec/api/).

Voer de volgende stappen uit om een of meer containerinstallatiekopieën te verwijderen:

  1. Stel de naam van de installatiekopieën in op de afbeelding die u wilt verwijderen.

    PS C:\WINDOWS\system32> $imageName="nginx"    
    
  2. Stel de gebruikersnaam en het wachtwoord van het containerregister in als ps-referentie

    PS C:\WINDOWS\system32> $username="ase-ecr-user"
    PS C:\WINDOWS\system32> $password="3bbo2sOtDe8FouD"
    PS C:\WINDOWS\system32> $securePassword = ConvertTo-SecureString $password -AsPlainText -Force
    PS C:\WINDOWS\system32> $credential = New-Object System.Management.Automation.PSCredential ($username, $securePassword)    
    
  3. De tags weergeven die zijn gekoppeld aan de afbeelding

    PS C:\WINDOWS\system32> $tags = Invoke-RestMethod -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/nginx/tags/list" | Select-Object -ExpandProperty tags
    PS C:\WINDOWS\system32> $tags
    2.0
    PS C:\WINDOWS\system32> $tags = Invoke-RestMethod -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/$imageName/tags/list" | Select-Object -ExpandProperty tags
    PS C:\WINDOWS\system32> $tags
    2.0
    PS C:\WINDOWS\system32>    
    
  4. Vermeld de samenvatting die is gekoppeld aan de tag die u wilt verwijderen. Hierbij wordt gebruikgemaakt van $tags uit de uitvoer van de bovenstaande opdracht. Als u meerdere tags hebt, selecteert u een van deze tags en gebruikt u deze in de volgende opdracht.

    PS C:\WINDOWS\system32> $response = Invoke-WebRequest -Method Head -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/$imageName/manifests/$tags" -Headers @{ 'Accept' = 'application/vnd.docker.distribution.manifest.v2+json' }
    PS C:\WINDOWS\system32> $digest = $response.Headers['Docker-Content-Digest']
    PS C:\WINDOWS\system32> $digest
    sha256:b4c0378c841cd76f0b75bc63454bfc6fe194a5220d4eab0d75963bccdbc327ff
    PS C:\WINDOWS\system32>    
    
  5. De afbeelding verwijderen met behulp van de samenvatting van de afbeelding:tag

    PS C:\WINDOWS\system32> Invoke-WebRequest -Method Delete -Credential $credential -Uri "https://ecr.dbe-hw6h1t2.microsoftdatabox.com:31001/v2/$imageName/manifests/$digest" | Select-Object -ExpandProperty StatusDescription    
    

Nadat u de ongebruikte afbeeldingen hebt verwijderd, wordt de ruimte die is gekoppeld aan de niet-deductie-installatiekopieën automatisch vrijgemaakt door een proces dat 's nachts wordt uitgevoerd.

Volgende stappen