Leifeng.com AI geliştiricisinin notu: Mevcut kapsayıcı görüntüleri, Alibaba Bulut görüntü hizmeti olan ACR'ye sorunsuz bir şekilde nasıl geçirilir? Son zamanlarda, Alibaba Cloud iyi bir plan verdi: Yüzlerce aynanın sorunsuz toplu geçişini sağlayabilen ve en büyük ayna deposunun toplam miktarı 3T'den daha fazlasına ulaşabilen görüntü-senkronizasyon aracını açık kaynaklı. Ve bu araç aynı zamanda bir konteyner görüntü taşıma / senkronizasyon aracı olarak da bilinir.Leifeng.com'un AI geliştiricileri, temel içeriğini ve açık kaynak adreslerini aşağıdaki gibi derlediler.
Adından da anlaşılacağı gibi, görüntü eşzamanlayıcı esasen bir görüntü eşzamanlayıcıdır. Çoktan çoğa imaj ambarlarını senkronize edebilen ve ACR, DockerHub, Quay, kendi kendine inşa edilen Liman vb. Gibi mevcut ana akım docker imaj ambarı hizmetlerinin çoğunu destekleyen bir docker imaj senkronizasyon aracıdır.
Normalde, k8s küme geçiş senaryosunda, ayna ambarları arasında yansıtma geçişi / senkronizasyonu temel bir gerekliliktir ve komut dosyalarıyla birlikte docker pull / push kullanan geleneksel yansıtma yöntemi aşağıdaki gibidir. Birkaç sınırlama :
Disk depolamaya bağlı olarak, yerel aynaların zamanında temizlenmesi gerekir ve disk yerleştirme fazladan zamana ve ek yüke neden olur, bu da üretim senaryolarında çok sayıda aynanın geçişini idare etmek zordur.
Docker programına bağlı olarak docker daemon, eşzamanlı çekme / itme sayısına katı bir sınır koyar ve yüksek eşzamanlı senkronizasyon gerçekleştiremez.
Bazı işlevler yalnızca HTTP api aracılığıyla çalıştırılabilir; bu, komut dosyasını karmaşık hale getiren docker cli kullanılarak yapılamaz.
Şekil 1 Alibaba Bulut geçiş çerçevesi
Görüntü eşzamanlayıcının geliştirilmesinin başlangıcında, basit ve kullanımı kolay bir toplu yansıtma taşıma / eşzamanlama aracı olarak konumlandırıldı; bu nedenle, Özellikleri aşağıdaki gibi:
Çoktan çoğa ayna ambar senkronizasyonunu destekleyin
Docker Registry V2'ye (Docker Hub, Quay, Alibaba Cloud Image Service ACR, Harbor vb.) Dayalı docker görüntü ambarı hizmetini destekleyin
Senkronizasyon yalnızca bellek ve ağ üzerinden gerçekleşir, disk depolamaya bağlı değildir ve senkronizasyon hızı yüksektir
Senkronize edilmiş ayna blob bilgisini diske yerleştirerek ve senkronize edilmiş aynalamayı tekrarlamayarak artan senkronizasyon
Eşzamanlı senkronizasyon, konfigürasyon dosyası aracılığıyla eşzamanlılık sayısını ayarlayabilirsiniz
Başarısız senkronizasyon görevlerini otomatik olarak yeniden deneyin; bu, yansıtma senkronizasyonundaki ağ gecikme sorunlarının çoğunu çözebilir
Docker ve diğer programlara güvenmiyor
Yalnızca görüntü eşzamanlayıcı işletim ortamının senkronize edilmesi gereken kayıt defteri ağına bağlı olduğundan emin olmanız gerekir; kullanıcılar yansıtma deposundan geçişi, kopyalamayı ve artımlı eşitlemeyi hızla tamamlayabilir ve aracın neredeyse hiç donanım kaynağı gereksinimi yoktur (çünkü görüntü eşzamanlayıcı Ağ bağlantılarının sayısını kesin olarak kontrol edin = eşzamanlılık sayısı, bu nedenle yalnızca tek bir yansıtma katmanı çok büyük olduğunda, eşzamanlılık sayısı belleği ve bellek kullanımını doldurmak için çok büyük olabilir
Görüntü eşzamanlayıcısını çalıştırmak için, yalnızca aşağıdaki içeriğe sahip bir yapılandırma dosyası sağlamanız gerekir:
{
"auth": {// Her nesnenin bir hesap ve bir kayıt defteri olduğu kimlik doğrulama alanı
// Parola; genellikle senkronizasyon kaynağının çekme ve erişim etiketleri izinlerine sahip olması gerekir,
// Senkronizasyon hedefinin itme ve depo izinleri oluşturması gerekir, sağlanmadıysa anonim erişim varsayılan olarak kullanılır
"quay.io": {// Kayıt defterinin url'si aşağıdaki görüntülerde karşılık gelen kayıt defterinin url'si ile aynı olmalıdır
"kullanıcı adı": "xxx", // kullanıcı adı, isteğe bağlı
"şifre": "xxxxxxxxx", // şifre, isteğe bağlı
"güvensiz": true // Kayıt defterinin bir http hizmeti olup olmadığı, öyleyse, güvenli olmayan alanın doğru olması gerekir, varsayılanın yanlış olması, isteğe bağlı olması, bu seçeneği desteklemek için görüntü eşzamanlayıcı sürümünü gerektirir > v1.0.1
},
"registry.cn-beijing.aliyuncs.com": {
"kullanıcı adı": "xxx",
"şifre": "xxxxxxxxx"
},
"registry.hub.docker.com": {
"kullanıcı adı": "xxx",
"şifre": "xxxxxxxxxx"
}
},
"Görüntüler": {
// Yansıtma kuralı alanını senkronize edin, kurallardan biri bir kaynak ambar (anahtar) ve bir hedef ambar (değer) içerir
// En büyük senkronizasyon birimi, tüm ad alanının ve kayıt defterinin tek bir kural üzerinden senkronizasyonunu desteklemeyen depodur
// Kaynak ambarın ve hedef ambarın biçimi, docker pull / push komutu (kayıt / ad alanı / depo: etiket) tarafından kullanılan ayna url'sine benzer
// Hem kaynak ambar hem de hedef ambar (hedef ambar boş bir dize değilse) en azından kayıt defteri / ad alanı / depo içerir
// Kaynak ambar alanı boş olamaz. Bir kaynak ambarını birden çok hedef ambarla senkronize etmeniz gerekiyorsa, birden çok kural yapılandırmanız gerekir
// Hedef ambar adı, kaynak ambar adından farklı olabilir (etiketler de farklı olabilir) ve senkronizasyon işlevi şuna benzer: docker pull + docker tag + docker push
"quay.io/coreos/kube-rbac-proxy": "quay.io/ruohe/kube-rbac-proxy",
"xxxx": "xxxxx",
"xxx / xxx / xx: tag1, tag2, tag3": "xxx / xxx / xx"
// Kaynak ambar alanı etiket içermediğinde bu, ambarın tüm etiketlerinin hedef ambarla senkronize edildiği anlamına gelir. Şu anda, hedef ambar etiket içeremez
// Kaynak ambar alanı bir etiket içerdiğinde, bu, kaynak depodaki yalnızca bir etiketin hedef depoyla senkronize edildiği anlamına gelir. Hedef ambar bir etiket içermiyorsa varsayılan olarak kaynak etiketi kullanılır
// Kaynak ambar alanındaki etiket aynı anda birden fazla etiket içerebilir ("a / b / c: 1,2,3" gibi) ve etiketler "," ile ayrılmıştır. Şu anda, hedef ambar etiketleri içeremez ve varsayılan Orijinal etiketi kullanın
// Hedef ambar boş bir dizge olduğunda, kaynak görüntü varsayılan kayıt defterinin varsayılan ad alanına senkronize edilir ve depo ve etiket, kaynak ambar ile aynıdır. Varsayılan kayıt defteri ve varsayılan ad alanı, komut satırı parametreleri ve ortam değişkenleri aracılığıyla yapılandırılabilir, aşağıya bakın tanımı
}
}
Kullanıcılar, farklı geçiş / senkronizasyon gereksinimlerini eşleştirmek için farklı ayna senkronizasyon kuralları kombinasyonlarını yapılandırabilir; örneğin, tek bir ayna reposunu birden çok farklı ayna deposu ile senkronize etmek ve birden çok kaynak aynasını tek bir ayna deposu ile senkronize etmek (etiketle tanımlanır) , Aynı kayıt defterinde farklı bir adla bir ayna deposu kopyalayın, vb.
Senkronizasyon kaynağı olarak kayıt adresine anonim olarak erişirseniz, izin sorunları olabileceğine dikkat edilmelidir. Yansıtma çekilemez ve etiketler alınamaz. Bu durumda, "auth" de karşılık gelen izinlere sahip bir hesap şifresi eklemeniz gerekir; ve anonim erişim olarak kullanılırsa Senkronizasyon hedefinin kayıt defteri adresi, izin sorunları nedeniyle yansıtmayı zorlayamayabilir ve kullanıcının, ilgili izinlere sahip bir hesap şifresi sağlaması da gerekebilir.
Yansıtmayı kendi inşa eden limandan ACR'ye senkronize etmek genellikle 5 adım alır, örneğin:
ACR örneği oluşturun
Ad alanı oluşturun
Erişim kimlik bilgileri oluşturun
Yetki yönetimi yapın ve konfigürasyonu tamamlayın
Şekil 2 Minimum ayrıcalık ayarı örneği
Image-syncer çalıştırılabilir dosyasını indirin (şu anda sadece linux amd64 sürümünü desteklemektedir, kendi başınıza derleyebilirsiniz) ve sıkıştırmayı açıp aracı çalıştırın
Kaynak kodun ve ikili dosyaların en son sürümü:
https://github.com/AliyunContainerService/image-syncer/releases/tag/v1.0.3
Bir senkronizasyon üç aşamadan geçecektir: senkronizasyon görevleri oluşturma, senkronizasyon görevlerini yürütme ve başarısız görevleri yeniden deneme; bunların arasında, her senkronizasyon görevi senkronize edilmesi gereken bir etiketi (aynayı) temsil eder.Yapılandırma dosyasındaki bir kural bir etiket belirtmiyorsa, "Senkronizasyon Görevi Oluştur" aşamasında, kaynak depodaki tüm etiketler otomatik olarak listelenecek ve ilgili senkronizasyon görevi oluşturulacaktır.Senkronizasyon görevi oluşturulamazsa, yeniden deneme aşamasında yeniden denenecektir. (Kasıtlı olarak eşleşmeyen hesap şifresi) Yürütme çıktısı aşağıdaki gibidir:
Şekil 3 Yanlış hesap parolası yapılandırıldığında çıktıyı çalıştır
Normal çalışma çıkışı:
Şekil 4 Normal çalışma sırasında çıkışı yürütme
Görüntü eşzamanlayıcı çalışırken aşağıdaki günlük bilgilerini yazdıracaktır:
Şekil 5 Çıktı sonuç günlüğü
Eşitleme bittikten sonra, görüntü eşzamanlayıcı, başarılı ve başarısız eşitleme görevlerinin sayısını da sayar (her eşitleme görevi bir yansıtmayı temsil eder) ve standart çıktı ve günlükte "Bitti, BAŞARISIZ GÖREVLER" yazdırır > senkronizasyon görevleri başarısız oldu, TASKS > Görevler oluşturulamadı ", böylece senkronizasyonun sonucunu alabilirsiniz.
Şekil 6 Diğer parametrelerin bazı örnekleri
Orijinal bağlantı:
https://yq.aliyun.com/articles/727565?utm_content=g_1000088598
Github açık kaynak adresi:
https://github.com/AliyunContainerService/image-syncer
Daha fazla SSS için bkz .:
https://github.com/AliyunContainerService/image-syncer/blob/master/FAQs.md
Leifeng.com AI Geliştiricisi
Leifeng.com Yıllık Seçimi 19 büyük sektörde en iyi yapay zeka iniş uygulamalarını arıyor
2017'de kurulan "En İyi AI Nuggets Vakalarının Yıllık Listesi", sektörün ilk AI iş vaka seçimi etkinliğidir. Ticari boyuttan başlayarak, Leifeng.com çeşitli sektörlerde en iyi yapay zeka uygulamalarını arıyor.
Üçüncü seçim resmi olarak başlatıldı. Kayda katılmak için WeChat genel hesabı "Leifeng.com" u takip edin ve "liste" anahtar kelimesini yanıtlayın. Ayrıntılar için lütfen WeChat ID'ye başvurun: xqxq_xq