Udostępnij za pośrednictwem


Włączanie rejestru kontenerów usługi Edge na urządzeniu z procesorem GPU Usługi Azure Stack Edge Pro

DOTYCZY: Tak dla jednostki SKU procesora GPU ProAzure Stack Edge Pro — GPUTak dla jednostki SKU Pro 2Azure Stack Edge Pro 2Tak dla jednostki SKU Pro RAzure Stack Edge Pro R Azure Stack Edge Mini RTak dla jednostki SKU Mini R

W tym artykule opisano sposób włączania rejestru kontenerów usługi Edge i używania go z poziomu klastra Kubernetes na urządzeniu Azure Stack Edge Pro. Przykład użyty w artykule zawiera szczegółowe informacje na temat wypychania obrazu z rejestru źródłowego, w tym przypadku rejestru kontenerów firmy Microsoft do rejestru na urządzeniu Azure Stack Edge, rejestru kontenerów usługi Edge.

Informacje o rejestrze kontenerów usługi Edge

Konteneryzowane aplikacje obliczeniowe działają na obrazach kontenerów, a te obrazy są przechowywane w rejestrach. Rejestry mogą być publiczne, takie jak Docker Hub, prywatne lub zarządzane przez dostawcę chmury, takie jak Azure Container Registry. Aby uzyskać więcej informacji, zobacz Informacje o rejestrach, repozytoriach i obrazach.

Rejestr kontenerów usługi Edge udostępnia repozytorium w przeglądarce Edge na urządzeniu Azure Stack Edge Pro. Za pomocą tego rejestru można przechowywać prywatne obrazy kontenerów i zarządzać nimi.

W środowisku z wieloma węzłami obrazy kontenerów można pobrać i wypchnąć do rejestru kontenerów usługi Edge raz. Wszystkie aplikacje edge mogą używać rejestru kontenerów usługi Edge do kolejnych wdrożeń.

Wymagania wstępne

Przed rozpoczęciem upewnij się, że:

  1. Masz dostęp do urządzenia Azure Stack Edge Pro.

  2. Aktywowano urządzenie Azure Stack Edge Pro zgodnie z opisem w temacie Aktywowanie usługi Azure Stack Edge Pro.

  3. Na urządzeniu włączono rolę obliczeniową. Klaster Kubernetes został również utworzony na urządzeniu podczas konfigurowania obliczeń na urządzeniu zgodnie z instrukcjami w temacie Konfigurowanie obliczeń na urządzeniu Azure Stack Edge Pro.

  4. Masz punkt końcowy interfejsu API Kubernetes ze strony Urządzenie lokalnego internetowego interfejsu użytkownika. Aby uzyskać więcej informacji, zobacz instrukcje w artykule Get Kubernetes API endpoint (Uzyskiwanie punktu końcowego interfejsu API kubernetes).

  5. Masz dostęp do systemu klienckiego z obsługiwanym systemem operacyjnym. W przypadku korzystania z klienta systemu Windows system powinien uruchomić program PowerShell 5.0 lub nowszy, aby uzyskać dostęp do urządzenia.

    1. Jeśli chcesz ściągnąć i wypchnąć własne obrazy kontenerów, upewnij się, że system ma zainstalowanego klienta platformy Docker. W przypadku korzystania z klienta systemu Windows zainstaluj program Docker Desktop w systemie Windows.

Włączanie rejestru kontenerów jako dodatku

Pierwszym krokiem jest włączenie rejestru kontenerów usługi Edge jako dodatku.

  1. Połącz się z interfejsem programu PowerShell urządzenia.

  2. Aby włączyć rejestr kontenerów jako dodatek, wpisz:

    Set-HcsKubernetesContainerRegistry

    Wykonanie tej operacji może potrwać kilka minut.

    Oto przykładowe dane wyjściowe tego polecenia:

    [10.128.44.40]: PS>Set-HcsKubernetesContainerRegistry
    Operation completed successfully. Use Get-HcsKubernetesContainerRegistryInfo for credentials    
    
  3. Aby uzyskać szczegóły rejestru kontenerów, wpisz:

    Get-HcsKubernetesContainerRegistryInfo

    Oto przykład z tego polecenia:

    [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. Zanotuj nazwę użytkownika i hasło z danych wyjściowych polecenia Get-HcsKubernetesContainerRegistryInfo. Te poświadczenia są używane do logowania się do rejestru kontenerów usługi Edge podczas wypychania obrazów.

Zarządzanie obrazami rejestru kontenerów

Możesz chcieć uzyskać dostęp do rejestru kontenerów spoza urządzenia Azure Stack Edge. Możesz również wypchnąć lub ściągnąć obrazy w rejestrze.

Wykonaj następujące kroki, aby uzyskać dostęp do rejestru kontenerów usługi Edge:

  1. Pobierz szczegóły punktu końcowego dla rejestru kontenerów usługi Edge.

    1. W lokalnym interfejsie użytkownika urządzenia przejdź do pozycji Urządzenie.

    2. Znajdź punkt końcowy rejestru kontenerów usługi Edge. Punkt końcowy rejestru kontenerów usługi Edge na stronie Urządzenie

    3. Skopiuj ten punkt końcowy i utwórz odpowiedni wpis DNS w C:\Windows\System32\Drivers\etc\hosts pliku klienta, aby nawiązać połączenie z punktem końcowym rejestru kontenerów usługi Edge.

      <Adres IP głównego punktu końcowego rejestru kontenerów usługi Kubernetes w usłudze><Kubernetes>

      Dodawanie wpisu DNS dla punktu końcowego rejestru kontenerów usługi Edge

  2. Pobierz certyfikat rejestru kontenerów usługi Edge z lokalnego interfejsu użytkownika.

    1. W lokalnym interfejsie użytkownika urządzenia przejdź do pozycji Certyfikaty.

    2. Znajdź wpis dla certyfikatu rejestru kontenerów usługi Edge. Po prawej stronie tego wpisu wybierz pozycję Pobierz , aby pobrać certyfikat rejestru kontenerów usługi Edge w systemie klienckim, którego będziesz używać do uzyskiwania dostępu do urządzenia.

      Pobieranie certyfikatu punktu końcowego rejestru kontenerów usługi Edge

  3. Zainstaluj pobrany certyfikat na kliencie. W przypadku korzystania z klienta systemu Windows wykonaj następujące kroki:

    1. Wybierz certyfikat, a następnie w Kreatorze importu certyfikatów wybierz pozycję Lokalizacja magazynu jako Komputer lokalny.

      Instalowanie certyfikatu 1

    2. Zainstaluj certyfikat na komputerze lokalnym w zaufanym magazynie głównym.

      Instalowanie certyfikatu 2

  4. Po zainstalowaniu certyfikatu uruchom ponownie klienta platformy Docker w systemie.

  5. Zaloguj się do rejestru kontenerów usługi Edge. Typ:

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

    Podaj punkt końcowy rejestru kontenerów usługi Edge na stronie Urządzenia oraz nazwę użytkownika i hasło uzyskane z danych wyjściowych polecenia Get-HcsKubernetesContainerRegistryInfo.

  6. Użyj poleceń docker push lub pull, aby wypchnąć lub ściągnąć obrazy kontenerów z rejestru kontenerów.

    1. Ściąganie obrazu z obrazu usługi Microsoft Container Registry. Typ:

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

    2. Utwórz alias obrazu, który został ściągnięty z w pełni kwalifikowaną ścieżką do rejestru.

      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. Wypchnij obraz do rejestru.

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

    4. Uruchom obraz wypchnięty do rejestru.

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

      Oto przykładowe dane wyjściowe poleceń ściągania i wypychania:

      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. Przejdź do, aby http://localhost:8080 wyświetlić uruchomiony kontener. W takim przypadku zostanie wyświetlony serwer sieci Web nginx uruchomiony.

    Wyświetlanie uruchomionego kontenera

    Aby zatrzymać i usunąć kontener, naciśnij Control+C.

Używanie obrazów rejestru kontenerów usługi Edge za pośrednictwem zasobników Kubernetes

Teraz możesz wdrożyć obraz wypchnięty w rejestrze kontenerów usługi Edge z poziomu zasobników Kubernetes.

  1. Aby wdrożyć obraz, należy skonfigurować dostęp do klastra za pośrednictwem narzędzia kubectl. Utwórz przestrzeń nazw, użytkownika, przyznaj użytkownikowi dostęp do przestrzeni nazw i pobierz plik konfiguracji . Upewnij się, że możesz nawiązać połączenie z zasobnikami Kubernetes.

    Wykonaj wszystkie kroki opisane w temacie Nawiązywanie połączenia z klastrem Kubernetes i zarządzanie nim za pośrednictwem narzędzia kubectl na urządzeniu gpu Azure Stack Edge Pro.

    Oto przykładowe dane wyjściowe przestrzeni nazw na urządzeniu, z której użytkownik może uzyskać dostęp do klastra 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. Wpisy tajne ściągania obrazu są już ustawione we wszystkich przestrzeniach nazw kubernetes na urządzeniu. Wpisy tajne można uzyskać za pomocą get secrets polecenia . Oto przykładowe dane wyjściowe:

    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. Wdróż zasobnik w przestrzeni nazw przy użyciu narzędzia kubectl. Użyj następującego yamlpolecenia .

    Zastąp obraz: <image-name> obrazem wypchniętym do rejestru kontenerów. Zapoznaj się z wpisami tajnymi w przestrzeniach nazw przy użyciu elementu imagePullSecrets o nazwie: 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. Zastosuj wdrożenie w przestrzeni nazw utworzonej przy użyciu polecenia apply. Sprawdź, czy kontener jest uruchomiony. Oto przykładowe dane wyjściowe:

    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>
    

Usuwanie obrazów rejestru kontenerów

Magazyn usługi Edge Container Registry jest hostowany w udziale lokalnym na urządzeniu Azure Stack Edge Pro, który jest ograniczony przez dostępny magazyn na urządzeniu. Twoim zadaniem jest usunięcie nieużywanych obrazów platformy Docker z rejestru kontenerów przy użyciu interfejsu API HTTP v2 platformy Docker (https://docs.docker.com/registry/spec/api/).

Aby usunąć co najmniej jeden obraz kontenera, wykonaj następujące kroki:

  1. Ustaw nazwę obrazu na obraz, który chcesz usunąć.

    PS C:\WINDOWS\system32> $imageName="nginx"    
    
  2. Ustawianie nazwy użytkownika i hasła rejestru kontenerów jako poświadczenia 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. Wyświetlanie listy tagów skojarzonych z obrazem

    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. Wyświetl listę skrótów skojarzonych z tagiem, który chcesz usunąć. Używa $tags z danych wyjściowych powyższego polecenia. Jeśli masz wiele tagów, wybierz jeden z nich i użyj go w następnym poleceniu.

    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. Usuń obraz przy użyciu skrótu image: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 usunięciu nieużywanych obrazów miejsce skojarzone z nieużywanymi obrazami jest automatycznie odzyskiwane przez proces uruchamiany w nocy.

Następne kroki