Memecahkan masalah jaringan dengan registri

Artikel ini membantu Anda memecahkan masalah yang mungkin Anda temui saat mengakses registri kontainer Azure di jaringan virtual atau di belakang firewall atau proksi.

Gejala

Dapat mencakup satu atau lebih hal berikut:

  • Tidak dapat mendorong atau menarik citra dan Anda menerima kesalahan dial tcp: lookup myregistry.azurecr.io
  • Tidak dapat mendorong atau menarik citra dan Anda menerima kesalahan Client.Timeout exceeded while awaiting headers
  • Tidak dapat mendorong atau menarik citra dan Anda menerima kesalahan Azure CLI Could not connect to the registry login server
  • Tidak dapat menarik citra dari registri ke Azure Kubernetes Service atau layanan Azure lainnya
  • Tidak dapat mengakses registri di belakang proxy HTTPS dan Anda menerima kesalahan Error response from daemon: login attempt failed with status: 403 Forbidden atau Error response from daemon: Get <registry>: proxyconnect tcp: EOF Login failed
  • Tidak dapat mengonfigurasi pengaturan jaringan virtual dan Anda menerima kesalahan Failed to save firewall and virtual network settings for container registry
  • Tidak dapat mengakses atau melihat pengaturan registri di portal Azure atau mengelola registri menggunakan Azure CLI
  • Tidak dapat menambah atau mengubah pengaturan jaringan virtual atau aturan akses publik
  • Tugas ACR tidak dapat mendorong atau menarik citra
  • Pertahanan Microsoft untuk Cloud tidak dapat memindai citra dalam registri, atau hasil pemindaian tidak muncul di Pertahanan Microsoft untuk Cloud
  • Anda menerima kesalahan host is not reachable saat mencoba mengakses registri yang dikonfigurasi dengan titik akhir pribadi.

Penyebab

  • Firewall atau proksi klien mencegah akses - solusi
  • Aturan akses jaringan publik pada registri mencegah akses - solusi
  • Jaringan virtual atau konfigurasi titik akhir privat mencegah akses - solusi
  • Anda mencoba mengintegrasikan Pertahanan Microsoft untuk Cloud atau layanan Azure tertentu lainnya dengan registri yang memiliki titik akhir privat, titik akhir layanan, atau aturan akses IP publik - solusi

Diagnosis lebih lanjut

Jalankan perintah az acr check-health untuk mendapatkan informasi selengkapnya tentang kesehatan lingkungan registri dan akses opsional ke registri target. Misalnya, mendiagnosis konektivitas jaringan atau masalah konfigurasi tertentu.

Lihat Memeriksa kesehatan registri kontainer Azure untuk contoh perintah. Jika kesalahan dilaporkan, tinjau referensi kesalahan dan bagian berikut untuk solusi yang disarankan.

Jika Anda mengalami masalah saat menggunakan Azure Kubernetes Service dengan registri terintegrasi, jalankan perintah az aks check-acr untuk memvalidasi bahwa kluster AKS dapat mencapai registri.

Catatan

Beberapa gejala konektivitas jaringan juga dapat terjadi ketika ada masalah dengan autentikasi atau otorisasi registri. Lihat Memecahkan masalah masuk registri.

Potensi solusi

Konfigurasikan akses firewall klien

Untuk mengakses registri dari belakang firewall klien atau server proxy, konfigurasikan aturan firewall untuk mengakses REST publik dan titik akhir data registri. Jika titik akhir data khusus diaktifkan, Anda memerlukan aturan untuk mengakses:

  • Titik akhir REST: <registryname>.azurecr.io
  • Titik akhir data: <registry-name>.<region>.data.azurecr.io

Untuk registri yang direplikasi secara geografis, konfigurasikan akses ke titik akhir data untuk setiap replika regional.

Di belakang proxy HTTPS, pastikan klien Docker dan daemon Docker Anda dikonfigurasi untuk perilaku proksi. Jika Anda mengubah pengaturan proksi untuk daemon Docker, pastikan untuk memulai ulang daemon tersebut.

Log sumber daya registri di tabel ContainerRegistryLoginEvents dapat membantu mendiagnosis percobaan koneksi yang diblokir.

Tautan terkait:

Konfigurasikan akses publik ke registri

Jika mengakses registri melalui internet, konfirmasikan bahwa registri mengizinkan akses jaringan publik dari klien Anda. Secara default, registri kontainer Azure memungkinkan akses ke titik akhir registri publik dari semua jaringan. Registri dapat membatasi akses ke jaringan yang dipilih, atau alamat IP yang dipilih.

Jika registri dikonfigurasi untuk jaringan virtual dengan titik akhir layanan, menonaktifkan akses jaringan publik juga menonaktifkan akses melalui titik akhir layanan. Jika registri Anda dikonfigurasi untuk jaringan virtual dengan Private Link, aturan jaringan IP tidak berlaku untuk titik akhir pribadi registri.

Tautan terkait:

Konfigurasikan akses VNet

Konfirmasikan bahwa jaringan virtual dikonfigurasi dengan titik akhir pribadi untuk Private Link atau titik akhir layanan (pratinjau). Saat ini, titik akhir Azure Bastion tidak didukung.

Jika titik akhir pribadi dikonfigurasi, konfirmasikan bahwa DNS menyelesaikan FQDN publik registri seperti myregistry.azurecr.io ke alamat IP pribadi registri.

  • Jalankan perintah az acr check-health dengan parameter --vnet untuk mengonfirmasi perutean DNS ke titik akhir privat di jaringan virtual.
  • Gunakan utilitas jaringan seperti dig atau nslookup untuk pencarian DNS.
  • Pastikan bahwa rekaman DNS dikonfigurasi untuk FQDN registri dan untuk setiap FQDN titik akhir data.

Tinjau aturan NSG dan tag layanan yang digunakan untuk membatasi lalu lintas dari sumber daya lain di jaringan ke registri.

Jika titik akhir layanan ke registri dikonfigurasi, konfirmasikan bahwa aturan jaringan ditambahkan ke registri yang memungkinkan akses dari subnet jaringan tersebut. Titik akhir layanan hanya mendukung akses dari mesin virtual dan kluster AKS di jaringan.

Jika Anda ingin membatasi akses registri menggunakan jaringan virtual di langganan Azure yang berbeda, pastikan Anda mendaftarkan penyedia sumber daya Microsoft.ContainerRegistry dalam langganan tersebut. Daftarkan penyedia sumber daya untuk Azure Container Registry menggunakan portal Azure, Azure CLI, atau alat Azure lainnya.

Jika Azure Firewall atau solusi serupa dikonfigurasi di jaringan, periksa lalu lintas keluar dari sumber daya lain seperti kluster AKS diaktifkan untuk mencapai titik akhir registri.

Tautan terkait:

Konfigurasikan akses layanan

Saat ini, akses ke registri kontainer dengan pembatasan jaringan tidak diizinkan dari beberapa layanan Azure:

  • Pertahanan Microsoft untuk Cloud tidak dapat melakukan pemindaian kerentanan citra di registri yang membatasi akses ke titik akhir privat, subnet yang dipilih, atau alamat IP.
  • Sumber daya layanan Azure tertentu tidak dapat mengakses registri kontainer dengan pembatasan jaringan, termasuk Azure App Service dan Azure Container Instances.

Jika akses atau integrasi layanan Azure ini dengan registri penampung Anda diperlukan, hapus pembatasan jaringan. Misalnya, hapus titik akhir pribadi registri, atau hapus atau ubah aturan akses publik registri.

Mulai bulan Januari 2021, Anda dapat mengonfigurasi registri yang dibatasi jaringan untuk mengizinkan akses dari layanan tepercaya tertentu.

Tautan terkait:

Pemecahan masalah tingkat lanjut

Jika kumpulan log sumber daya diaktifkan di registri, tinjau log ContainterRegistryLoginEvents. Log ini menyimpan peristiwa dan status autentikasi, termasuk identitas dan alamat IP yang masuk. Kueri log untuk kegagalan autentikasi registri.

Tautan terkait:

Langkah berikutnya

Jika masalah Anda tidak terselesaikan di sini, lihat opsi berikut.