Włączanie rejestru kontenerów usługi Edge na urządzeniu z procesorem GPU Usługi Azure Stack Edge Pro
DOTYCZY: Azure Stack Edge Pro — GPUAzure Stack Edge Pro 2Azure Stack Edge Pro R Azure Stack Edge 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:
Masz dostęp do urządzenia Azure Stack Edge Pro.
Aktywowano urządzenie Azure Stack Edge Pro zgodnie z opisem w temacie Aktywowanie usługi Azure Stack Edge Pro.
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.
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).
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.
- 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.
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
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
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:
Pobierz szczegóły punktu końcowego dla rejestru kontenerów usługi Edge.
W lokalnym interfejsie użytkownika urządzenia przejdź do pozycji Urządzenie.
Znajdź punkt końcowy rejestru kontenerów usługi Edge.
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>
Pobierz certyfikat rejestru kontenerów usługi Edge z lokalnego interfejsu użytkownika.
W lokalnym interfejsie użytkownika urządzenia przejdź do pozycji Certyfikaty.
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.
Zainstaluj pobrany certyfikat na kliencie. W przypadku korzystania z klienta systemu Windows wykonaj następujące kroki:
Wybierz certyfikat, a następnie w Kreatorze importu certyfikatów wybierz pozycję Lokalizacja magazynu jako Komputer lokalny.
Zainstaluj certyfikat na komputerze lokalnym w zaufanym magazynie głównym.
Po zainstalowaniu certyfikatu uruchom ponownie klienta platformy Docker w systemie.
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
.Użyj poleceń docker push lub pull, aby wypchnąć lub ściągnąć obrazy kontenerów z rejestru kontenerów.
Ściąganie obrazu z obrazu usługi Microsoft Container Registry. Typ:
docker pull <Full path to the container image in the Microsoft Container Registry>
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>
Wypchnij obraz do rejestru.
docker push <Path to the image in the Edge container registry/Image name with tag>
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>
Przejdź do, aby
http://localhost:8080
wyświetlić uruchomiony kontener. W takim przypadku zostanie wyświetlony serwer sieci Web nginx uruchomiony.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.
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>
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>
Wdróż zasobnik w przestrzeni nazw przy użyciu narzędzia kubectl. Użyj następującego
yaml
polecenia .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
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:
Ustaw nazwę obrazu na obraz, który chcesz usunąć.
PS C:\WINDOWS\system32> $imageName="nginx"
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)
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>
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>
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.