Alibaba Cloud'un, kapsayıcı görüntülerinin büyük ölçekli geçişi ve senkronizasyonu için bir araç olan açık kaynaklı görüntü senkronizasyon aracı

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.

Görüntü eşzamanlayıcı nedir?

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ı nasıl kullanılır?

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

ortak problem

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

Silahlı adam, hastaneden taburcu olduktan hemen sonra tutuklandı! Yeni "bir kardeş" sağlam duruyor
önceki
Pekin hakkında Eğlenceli Konuşma Yongzheng 12 kez geldi ve Qianlong 28 kez geldi. Cennet Tapınağı ile "komşu" olmak hafife alınmamalıdır
Sonraki
Lei Jun, Zhou Hongyi, Wu Hequan ve diğer kodamanlar dünyadaki 5G gelişiminin genel eğilimini tartışmak için bir araya geldi
Yağmurdan sonra güneşli gün! Asaka yeni bir haftaya başlamak için balkonunuza vuruyor
Yao Ming, 2018-19 sezonu şampiyonluk yüzüğünü Guangdong kadın basketbol takımına verdi
Chongqing'de "çılgın" bir araba tecrit bölgesinin üzerinden uçtu ve karşıdan gelen arabaya çarptı. Şoför bilinçsizdi ... çünkü sarhoştu.
Xiamen Derinlemesine yenileme ve iyi yönetim simülasyonu yapan Gulangyu parlıyor
Hong Kong polisi tekrar teslim olmaya ikna etti: "Haidilao'yu yemeye Shenzhen'e gideceğim"
Guangzhou şu anda 30 derece, sıcaklığın yok mu? Merak etmeyin! 25'inden soğuk hava gelmeye devam ediyor
Takip burada! Yüksek hızlı trende oğlunun silah arkadaşlarının annesine rastladım ve üç dakikalığına "aile iznini ziyaret etmek" için oğlunun yanına gelmeyi umdum.
Hangi şehir en yüksek mutluluk endeksine sahip? Bu sefer son sözün var
Bittiğinde tren biletini atma, bu sana para kazandıracak
Nanshan Yarı Maratonuna 16.000 koşucu katıldı, Ugandalı koşucular ve Guangdong koşucuları erkekler ve kadınlar şampiyonalarını kazandı
"Arkeolojik Çin" in en son gelişmesi! Hangi değerli kültürel kalıntıların ortaya çıkarıldığını görün
To Top