تمكين سجل حاوية Edge على جهاز Azure Stack Edge Pro GPU
ينطبق على: Azure Stack Edge Pro - GPUAzure Stack Edge Pro 2Azure Stack Edge Pro RAzure Stack Edge Mini R
توضح هذه المقالة كيفية تمكين سجل حاوية Edge واستخدامه من داخل مجموعة Kubernetes على جهاز Azure Stack Edge Pro. يوضح المثال المستخدم في المقالة تفاصيل كيفية دفع صورة من سجل مصدر، في هذه الحالة، سجل حاوية Microsoft، إلى السجل على جهاز Azure Stack Edge، سجل حاوية Edge.
حول سجل حاويات Edge
يتم تشغيل تطبيقات الحوسبة الحاوية على صور الحاوية ويتم تخزين هذه الصور في السجلات. يمكن أن تكون السجلات عامة مثل Docker Hub أو موفر خاص أو سحابي مدار مثل Azure Container Registry. لمزيد من المعلومات، راجع حول السجلات والمستودعات والصور.
يوفر سجل حاويات Edge مستودعا في Edge، على جهاز Azure Stack Edge Pro. يمكنك استخدام هذا السجل لتخزين صور الحاوية الخاصة وإدارتها.
في بيئة متعددة العقد، يمكن تنزيل صور الحاوية ودفعها إلى سجل حاوية Edge مرة واحدة. يمكن لجميع تطبيقات Edge استخدام سجل حاويات Edge للتوزيعات اللاحقة.
المتطلبات الأساسية
قبل البدء، تأكد من:
يمكنك الوصول إلى جهاز Azure Stack Edge Pro.
لقد قمت بتنشيط جهاز Azure Stack Edge Pro كما هو موضح في تنشيط Azure Stack Edge Pro.
لقد قمت بتمكين دور الحساب على الجهاز. تم أيضا إنشاء مجموعة Kubernetes على الجهاز عند تكوين الحساب على الجهاز وفقا للإرشادات الواردة في تكوين الحساب على جهاز Azure Stack Edge Pro.
لديك نقطة نهاية واجهة برمجة تطبيقات Kubernetes من صفحة الجهاز لواجهة مستخدم الويب المحلية. لمزيد من المعلومات، راجع الإرشادات الموجودة في نقطة نهاية Get Kubernetes API.
لديك حق الوصول إلى نظام عميل مع نظام تشغيل مدعوم. إذا كنت تستخدم عميل Windows، يجب أن يقوم النظام بتشغيل PowerShell 5.0 أو إصدار أحدث للوصول إلى الجهاز.
- إذا كنت ترغب في سحب ودفع صور الحاوية الخاصة بك، فتأكد من تثبيت عميل Docker على النظام. إذا كنت تستخدم عميل Windows، فقم بتثبيت Docker Desktop على Windows.
تمكين سجل الحاوية كوظيفة إضافية
الخطوة الأولى هي تمكين سجل حاوية Edge كوظيفة إضافية.
لتمكين سجل الحاوية كوظيفة إضافية، اكتب:
Set-HcsKubernetesContainerRegistry
قد تستغرق هذه العملية عدة دقائق لإكمالها.
فيما يلي نموذج إخراج هذا الأمر:
[10.128.44.40]: PS>Set-HcsKubernetesContainerRegistry Operation completed successfully. Use Get-HcsKubernetesContainerRegistryInfo for credentials
للحصول على تفاصيل سجل الحاوية، اكتب:
Get-HcsKubernetesContainerRegistryInfo
فيما يلي عينة من هذا الأمر:
[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
دون اسم المستخدم وكلمة المرور من إخراج
Get-HcsKubernetesContainerRegistryInfo
. يتم استخدام بيانات الاعتماد هذه لتسجيل الدخول إلى سجل حاوية Edge أثناء دفع الصور.
إدارة صور سجل الحاوية
قد تحتاج إلى الوصول إلى سجل الحاوية من خارج جهاز Azure Stack Edge. قد تحتاج أيضا إلى دفع الصور أو سحبها في السجل.
اتبع هذه الخطوات للوصول إلى سجل حاويات Edge:
احصل على تفاصيل نقطة النهاية لسجل حاوية Edge.
في واجهة المستخدم المحلية للجهاز، انتقل إلى الجهاز.
حدد موقع نقطة نهاية سجل حاوية Edge.
انسخ نقطة النهاية هذه وأنشئ إدخال DNS مطابقا
C:\Windows\System32\Drivers\etc\hosts
في ملف العميل للاتصال بنقطة نهاية سجل حاوية Edge.<عنوان IP لنقطة نهاية سجل حاوية Edge للعقدة><الرئيسية Kubernetes>
قم بتنزيل شهادة سجل حاوية Edge من واجهة المستخدم المحلية.
في واجهة المستخدم المحلية للجهاز، انتقل إلى الشهادات.
حدد موقع إدخال شهادة تسجيل حاوية Edge. على يمين هذا الإدخال، حدد تنزيل لتنزيل شهادة سجل حاوية Edge على نظام العميل الذي ستستخدمه للوصول إلى جهازك.
تثبيت الشهادة التي تم تنزيلها على العميل. إذا كنت تستخدم عميل Windows، فاتبع الخطوات التالية:
حدد الشهادة وفي معالج استيراد الشهادة، حدد موقع المتجر كجهة محلية.
تثبيت الشهادة على الجهاز المحلي في مخزن الجذر الموثوق به.
بعد تثبيت الشهادة، أعد تشغيل عميل Docker على النظام الخاص بك.
سجل الدخول إلى سجل حاوية Edge. النوع:
docker login <Edge container registry endpoint> -u <username> -p <password>
قم بتوفير نقطة نهاية سجل حاوية Edge من صفحة الأجهزة واسم المستخدم وكلمة المرور التي حصلت عليها من إخراج
Get-HcsKubernetesContainerRegistryInfo
.استخدم أوامر دفع أو سحب docker لدفع صور الحاوية أو سحبها من سجل الحاوية.
اسحب صورة من صورة Microsoft Container Registry. النوع:
docker pull <Full path to the container image in the Microsoft Container Registry>
إنشاء اسم مستعار للصورة التي سحبتها مع المسار المؤهل بالكامل إلى السجل الخاص بك.
docker tag <Path to the image in the Microsoft container registry> <Path to the image in the Edge container registry/Image name with tag>
ادفع الصورة إلى السجل الخاص بك.
docker push <Path to the image in the Edge container registry/Image name with tag>
قم بتشغيل الصورة التي دفعتها إلى السجل الخاص بك.
docker run -it --rm -p 8080:80 <Path to the image in the Edge container registry/Image name with tag>
فيما يلي عينة إخراج لأوامر السحب والدفع:
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>
تصفح إلى
http://localhost:8080
لعرض الحاوية قيد التشغيل. في هذه الحالة، سترى خادم ويب nginx قيد التشغيل.لإيقاف الحاوية وإزالتها، اضغط على
Control+C
.
استخدام صور سجل حاويات Edge عبر حاويات Kubernetes
يمكنك الآن نشر الصورة التي دفعتها في سجل حاويات Edge من داخل حاويات Kubernetes.
لنشر الصورة، تحتاج إلى تكوين الوصول إلى نظام المجموعة عبر kubectl. إنشاء مساحة اسم، مستخدم، منح المستخدم حق الوصول إلى مساحة الاسم، والحصول على ملف تكوين . تأكد من أنه يمكنك الاتصال بوحدات Kubernetes.
اتبع جميع الخطوات في الاتصال بمجموعة Kubernetes وإدارتها عبر kubectl على جهاز Azure Stack Edge Pro GPU.
فيما يلي نموذج إخراج لمساحة اسم على جهازك حيث يمكن للمستخدم الوصول إلى مجموعة 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>
تم تعيين أسرار سحب الصور بالفعل في جميع مساحات أسماء Kubernetes على جهازك. يمكنك الحصول على أسرار باستخدام
get secrets
الأمر . هنا هو إخراج العينة: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>
نشر جراب إلى مساحة الاسم الخاصة بك باستخدام kubectl. استخدم ما يلي
yaml
.استبدل الصورة:
<image-name>
بالصورة التي تم دفعها إلى سجل الحاوية. راجع الأسرار في مساحات الأسماء الخاصة بك باستخدام imagePullSecrets باسم: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
تطبيق النشر في مساحة الاسم التي قمت بإنشائها باستخدام الأمر تطبيق. تحقق من تشغيل الحاوية. هنا هو إخراج العينة:
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>
حذف صور سجل الحاوية
تتم استضافة تخزين Edge Container Registry على مشاركة محلية داخل جهاز Azure Stack Edge Pro الذي يقتصر على التخزين المتوفر على الجهاز. تقع على عاتقك مسؤولية حذف صور docker غير المستخدمة من سجل الحاوية باستخدام Docker HTTP v2 API (https://docs.docker.com/registry/spec/api/).
لإزالة صورة حاوية واحدة أو أكثر، اتبع الخطوات التالية:
قم بتعيين اسم الصورة إلى الصورة التي تريد حذفها.
PS C:\WINDOWS\system32> $imageName="nginx"
تعيين اسم المستخدم وكلمة المرور لسجل الحاوية كبيانات اعتماد 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)
سرد العلامات المقترنة بالصورة
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>
سرد الملخص المقترن بالعلامة التي ترغب في حذفها. يستخدم هذا $tags من إخراج الأمر أعلاه. إذا كان لديك علامات متعددة، فحدد واحدة منها واستخدمها في الأمر التالي.
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>
حذف الصورة باستخدام ملخص الصورة:العلامة
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
بعد حذف الصور غير المستخدمة، يتم استعادة المساحة المقترنة بالصور غير المستنتجة تلقائيا من خلال عملية يتم تشغيلها ليلا.