Povolení registru kontejnerů Edge na zařízení Azure Stack Edge Pro GPU

PLATÍ PRO:Yes for Pro GPU SKU Azure 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

Tento článek popisuje, jak povolit registr kontejneru Edge a používat ho v clusteru Kubernetes na zařízení Azure Stack Edge Pro. Příklad použitý v článku podrobně popisuje, jak odeslat image ze zdrojového registru, v tomto případě do registru v zařízení Azure Stack Edge, registru kontejneru Edge.

Informace o registru kontejneru Edge

Kontejnerizované výpočetní aplikace běží na imagích kontejnerů a tyto image jsou uložené v registrech. Registry můžou být veřejné, jako je Docker Hub, privátní nebo cloudový poskytovatel spravovaný, jako je Azure Container Registry. Další informace najdete v tématu o registrech, úložištích a imagích.

Registr kontejneru Edge poskytuje úložiště na hraničním zařízení Azure Stack Edge Pro. Tento registr můžete použít k ukládání a správě privátních imagí kontejnerů.

V prostředí s více uzly je možné image kontejnerů stáhnout a odeslat do registru kontejneru Edge jednou. Všechny aplikace Edge můžou pro následná nasazení používat registr kontejnerů Edge.

Předpoklady

Než začnete, ujistěte se, že:

  1. Máte přístup k zařízení Azure Stack Edge Pro.

  2. Aktivovali jste zařízení Azure Stack Edge Pro, jak je popsáno v tématu Aktivace Azure Stack Edge Pro.

  3. Povolili jste na zařízení výpočetní roli. Cluster Kubernetes byl také vytvořen na zařízení, když jste na zařízení nakonfigurovali výpočetní prostředky podle pokynů v části Konfigurace výpočetních prostředků na zařízení Azure Stack Edge Pro.

  4. Koncový bod rozhraní API Kubernetes máte ze stránky Zařízení místního webového uživatelského rozhraní. Další informace najdete v pokynech v tématu Získání koncového bodu rozhraní API Kubernetes.

  5. Máte přístup k klientskému systému s podporovaným operačním systémem. Pokud používáte klienta Windows, měl by systém pro přístup k zařízení spustit PowerShell 5.0 nebo novější.

    1. Pokud chcete vyžádat a odeslat vlastní image kontejneru, ujistěte se, že systém má nainstalovaného klienta Dockeru. Pokud používáte klienta Systému Windows, nainstalujte Docker Desktop ve Windows.

Povolení registru kontejneru jako doplňku

Prvním krokem je povolení registru kontejneru Edge jako doplňku.

  1. Připojení do rozhraní PowerShellu zařízení.

  2. Pokud chcete registr kontejneru povolit jako doplněk, zadejte:

    Set-HcsKubernetesContainerRegistry

    Dokončení této operace může trvat několik minut.

    Tady je ukázkový výstup tohoto příkazu:

    [10.128.44.40]: PS>Set-HcsKubernetesContainerRegistry
    Operation completed successfully. Use Get-HcsKubernetesContainerRegistryInfo for credentials    
    
  3. Pokud chcete získat podrobnosti registru kontejneru, zadejte:

    Get-HcsKubernetesContainerRegistryInfo

    Tady je ukázka tohoto příkazu:

    [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. Poznamenejte si uživatelské jméno a heslo z výstupu souboru Get-HcsKubernetesContainerRegistryInfo. Tyto přihlašovací údaje slouží k přihlášení k registru kontejneru Edge při odesílání imagí.

Správa imagí registru kontejneru

Možná budete chtít získat přístup k registru kontejneru mimo zařízení Azure Stack Edge. Můžete také chtít nasdílit nebo vyžádat image v registru.

Pokud chcete získat přístup k registru kontejneru Edge, postupujte takto:

  1. Získejte podrobnosti o koncovém bodu pro registr kontejneru Edge.

    1. V místním uživatelském rozhraní zařízení přejděte na Zařízení.

    2. Vyhledejte koncový bod registru kontejneru Edge. Edge container registry endpoint on Device page

    3. Zkopírujte tento koncový bod a vytvořte odpovídající položku DNS do C:\Windows\System32\Drivers\etc\hosts souboru vašeho klienta pro připojení ke koncovému bodu registru kontejneru Edge.

      <IP adresa koncového bodu registru kontejneru Edge hlavního uzlu><Kubernetes>

      Add DNS entry for Edge container registry endpoint

  2. Stáhněte si certifikát registru kontejneru Edge z místního uživatelského rozhraní.

    1. V místním uživatelském rozhraní zařízení přejděte na Certifikáty.

    2. Vyhledejte položku pro certifikát registru kontejneru Edge. Napravo od této položky vyberte stáhnout certifikát registru kontejneru Edge v klientském systému, který použijete pro přístup k zařízení.

      Download Edge container registry endpoint certificate

  3. Nainstalujte stažený certifikát do klienta. Pokud používáte klienta systému Windows, postupujte takto:

    1. Vyberte certifikát a v Průvodci importem certifikátu vyberte umístění úložiště jako místní počítač.

      Install certificate 1

    2. Nainstalujte certifikát na místní počítač v důvěryhodném kořenovém úložišti.

      Install certificate 2

  4. Po instalaci certifikátu restartujte klienta Dockeru ve vašem systému.

  5. Přihlaste se k registru kontejneru Edge. Zadejte:

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

    Zadejte koncový bod registru kontejneru Edge ze stránky Zařízení a uživatelské jméno a heslo, které jste získali z výstupu Get-HcsKubernetesContainerRegistryInfo.

  6. Pomocí příkazů docker push nebo pull nasdílejte nebo načítejte image kontejneru z registru kontejneru.

    1. Stáhněte si image z image služby Microsoft Container Registry. Zadejte:

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

    2. Vytvořte alias image, kterou jste natáhli s plně kvalifikovanou cestou k registru.

      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. Nasdílejte image do registru.

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

    4. Spusťte image, kterou jste odeslali do registru.

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

      Tady je ukázkový výstup příkazů pull a push:

      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. Přejděte k http://localhost:8080 zobrazení spuštěného kontejneru. V tomto případě se zobrazí spuštěný webový server nginx.

    View the running container

    Kontejner zastavíte a odeberete stisknutím klávesy Control+C.

Použití imagí registru kontejnerů Edge prostřednictvím podů Kubernetes

Teď můžete nasadit image, kterou jste odeslali do registru kontejneru Edge, z podů Kubernetes.

  1. Pokud chcete nasadit image, musíte nakonfigurovat přístup ke clusteru přes kubectl. Vytvořte obor názvů, uživatele, udělte uživateli přístup k oboru názvů a získejte konfigurační soubor. Ujistěte se, že se můžete připojit k podům Kubernetes.

    Postupujte podle všech kroků v Připojení ke správě clusteru Kubernetes přes kubectl na zařízení Azure Stack Edge Pro GPU.

    Tady je ukázkový výstup oboru názvů na vašem zařízení, ze kterého má uživatel přístup ke clusteru Kubernetes.

    [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. Tajné kódy pro vyžádání obrázků jsou už nastavené ve všech oborech názvů Kubernetes na vašem zařízení. Tajné kódy můžete získat pomocí get secrets příkazu. Tady je ukázkový výstup:

    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. Nasaďte pod do svého oboru názvů pomocí kubectl. Použijte následující yamlpříkaz .

    Nahraďte image: <image-name> image vloženou do registru kontejneru. Projděte si tajné kódy ve vašich oborech názvů pomocí imagePullSecrets s názvem: 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. Použijte nasazení v oboru názvů, který jste vytvořili pomocí příkazu Apply. Ověřte, že je kontejner spuštěný. Tady je ukázkový výstup:

    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>
    

Odstranění imagí registru kontejneru

Úložiště Služby Edge Container Registry je hostované v místní sdílené složce v zařízení Azure Stack Edge Pro, které je omezené dostupným úložištěm na zařízení. Zodpovídáte za odstranění nepoužívaných imagí Dockeru z registru kontejneru pomocí rozhraní API Docker HTTP v2 (https://docs.docker.com/registry/spec/api/).

Pokud chcete odebrat jednu nebo více imagí kontejneru, postupujte takto:

  1. Nastavte název image na image, kterou chcete odstranit.

    PS C:\WINDOWS\system32> $imageName="nginx"    
    
  2. Nastavení uživatelského jména a hesla registru kontejneru jako přihlašovacích údajů PS

    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. Výpis značek přidružených k obrázku

    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. Uveďte hodnotu hash přidruženou ke značce, kterou chcete odstranit. Používá se $tags z výstupu výše uvedeného příkazu. Pokud máte více značek, vyberte jednu z nich a použijte ji v dalším příkazu.

    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. Odstranění obrázku pomocí přehledu obrázku: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    
    

Po odstranění nepoužívaných obrázků se místo přidružené k neodkazovaným imagím automaticky uvolní procesem, který běží noc.

Další kroky