AKS VPN arkasındaki özel registry tarafından image çekemiyor
kubelet image@APOS@ı pod VPN@APOS@i üzerinden değil node ağı üzerinden çeker. Node rotaları, node DNS@APOS@i, çekmenin dokunduğu her endpoint, sonra TLS ve kimlik ile karar verin.
Dizüstü bilgisayarınız image’ı sorunsuz çekiyor, ancak pod ImagePullBackOff durumunda kalıyor ve biri kurumsal VPN istemcisini sidecar olarak çalıştırmayı öneriyor. Bu işe yaramaz, çünkü çekme işlemi sizin container’ınız var olmadan önce gerçekleşir: kubelet node üzerindeki container runtime’dan image’ı getirmesini ister ve runtime node’un ağ ad alanını kullanır.
İşlem sırası katmanı belirler
Önce ad çözümlemesi, sonra bağlantı, kimlik doğrulama, katmanların indirilmesi ve ancak ondan sonra container başlar. Pod’un VPN ile yaptığı her şey bu sıradan sonra gelir, bu yüzden kümede çalışan bir tünel çekme hakkında kanıt değildir.
Bu yüzden önbellekteki image bu kadar inandırıcı bir yalandır: image’ı haftalar önce çeken node onu sunmaya devam eder, deployment sağlıklı görünür ve hata ancak zamanlayıcı yeni bir node’a replika koyduğunda ortaya çıkar. scale-up veya node değişimi neden değil, tetikleyicidir.
Üç koşul onarımı belirler
Erişilebilirlik yönlendirme, ad çözümleme ve endpoint kümesine indirgenir. Node alt ağı registry ağına yönlendirme yapamıyorsa hiçbir kimlik bilgisi yardımcı olmaz. Ad, node DNS yoluyla çözülemiyorsa bağlantı başlamaz. Yalnızca manifest erişilebilir, blob erişilemezse çekme yarıda kalır.
| Condition | Typical symptom | Where to look |
|---|---|---|
| Node subnet has no route to the registry network | Timeout, no connection | Effective routes on the node NIC, gateway transit, return path on-premises |
| Node resolver cannot see the private zone | Name resolution failure in events | VNet DNS settings and the resolver the node actually uses |
| Only the manifest endpoint is reachable | Auth succeeds, layer download fails | Every hostname the registry hands out during the pull |
| TLS or identity is wrong | Certificate error, 401 or 403 | Server certificate name and trust, scoped pull identity |
Tek başına VNet eşlemesi tüm gateway transit düzenlerini vermez ve tek yönlü bir rota çalışan rota değildir. Node’un amaçlanan VPN gateway üzerinden desteklenen bir yola, registry tarafının da node alt ağına dönüş rotasına ihtiyacı vardır.
Onarımı seçmeden önce hatayı okuyun
Pod olaylarından ve indiği node’dan başlayın, gerçek adlarınızla: kubectl describe pod app-example -n team-example ve kubectl get pod app-example -n team-example -o wide. Olay metni çözülemeyen ana bilgisayar adını timeout’tan, sertifika reddini eksik image’dan ve yetkilendirme hatasını bunların hepsinden ayırır.
Kimlik doğrulama en çok abartılan kaldıraçtır. imagePullSecret runtime’a registry kimlik bilgilerini verir; rota kurmaz, node’un resolver’ını değiştirmez ve güvenilmeyen bir sertifikayı geçerli yapmaz. Olay çekmenin yetkisiz olduğunu söylüyorsa kimliğin kapsamına bakın; bağlantının zaman aşımına uğradığını söylüyorsa kimlik bilgileri konu dışıdır.
Kubernetes image belgeleri çekme davranışı ve özel registry kimlik bilgileri için referanstır ve ağı değiştirmeden önce bir kez okumaya değer, çünkü kimlik doğrulama ile taşıma arasındaki sınırı açık hâle getirir.
Pod’un altında yolu kurun
Bu sırayla çalışın. Önce node ağını yönlendirin: alt ağın registry ağına desteklenen bir yolu olduğunu doğrulayın, node üzerindeki etkin rotaları, iki uçtaki güvenlik kurallarını ve registry tarafındaki dönüş rotasını denetleyin.
Sonra adı node bağlamından çözün. Node’un resolver’ı pod’un DNS yapılandırması değildir ve pod içindeki başarı host runtime için kanıt değildir. Kalıcı hosts girdisi yerine yönetilen özel DNS kullanın; girdi node değiştirilene kadar yaşar ve sonra sessizce kaybolur.
Sonra her endpoint’i kanıtlayın. Registry istemciye ayrı bir kimlik doğrulama servisi ve ayrı bir blob depolama verebilir. Manifest’e ulaşmak katmanlar hakkında neredeyse hiçbir şey kanıtlamaz. Son olarak TLS ve yetkilendirmeyi tamamlayın: registry adı için geçerli ve desteklenen node yapılandırmasıyla güvenilen bir sertifika, ayrıca o depoyu okumakla sınırlı bir çekme kimliği.
Elle onarmadığınız bir node’da doğrulayın
Önemli olan test, uygun bir node’da yeni bir çekme ve tüm katmanların eksiksiz indirilmesidir; tercihen ölçekleme veya değiştirmeyle oluşturulmuş bir node’da. Bu, workload’ı yerleştirebilecek tüm pool’ları, unuttuklarınız dahil kapsar. Tek bir node’da elle onarım bir dağıtım modeli değildir ve bir sonraki autoscale olayı boşluğu bulacaktır.
Kümeyi başka bir VNet’te yeniden kurmak yolu değiştirebilir, ancak bu ilk tanı adımı değil son çaredir. Geçiş önermeden önce mevcut node ağını gereken özel rota ve desteklenen AKS ağ kontrolleriyle karşılaştırın ve başlatmadan sonraki uygulama bağlantısını ayrı bir doğrulama olarak tutun: pod’un backend’iyle konuşması, node’un image indirmesinden farklı bir kontroldür.