Povolení registru kontejnerů Edge na zařízení Azure Stack Edge Pro GPU
PLATÍ PRO: Azure Stack Edge Pro – GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure 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.
Požadavky
Než začnete, ujistěte se, že:
Máte přístup k zařízení Azure Stack Edge Pro.
Aktivovali jste zařízení Azure Stack Edge Pro, jak je popsáno v tématu Aktivace Azure Stack Edge Pro.
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.
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.
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ší.
- 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.
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
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
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:
Získejte podrobnosti o koncovém bodu pro registr kontejneru Edge.
V místním uživatelském rozhraní zařízení přejděte na Zařízení.
Vyhledejte koncový bod registru kontejneru Edge.
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>
Stáhněte si certifikát registru kontejneru Edge z místního uživatelského rozhraní.
V místním uživatelském rozhraní zařízení přejděte na Certifikáty.
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í.
Nainstalujte stažený certifikát do klienta. Pokud používáte klienta systému Windows, postupujte takto:
Vyberte certifikát a v Průvodci importem certifikátu vyberte umístění úložiště jako místní počítač.
Nainstalujte certifikát na místní počítač v důvěryhodném kořenovém úložišti.
Po instalaci certifikátu restartujte klienta Dockeru ve vašem systému.
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
.Pomocí příkazů docker push nebo pull nasdílejte nebo načítejte image kontejneru z registru kontejneru.
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>
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>
Nasdílejte image do registru.
docker push <Path to the image in the Edge container registry/Image name with tag>
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>
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.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.
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 části Připojení ke clusteru Kubernetes a spravujte ho 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>
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>
Nasaďte pod do svého oboru názvů pomocí kubectl. Použijte následující
yaml
pří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
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:
Nastavte název image na image, kterou chcete odstranit.
PS C:\WINDOWS\system32> $imageName="nginx"
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)
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>
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>
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.