Cloud-init ile VM sağlama sorunlarını giderme

Şunlar için geçerlidir: ✔️ Linux VM'leri ✔️ Esnek ölçek kümeleri

Genelleştirilmiş özel görüntüler oluşturur ve sağlama için cloud-init kullanırsanız, VM doğru bir şekilde oluşmayabilir. Bu durumda, sorunu bulmak için görüntüyü kontrol edin.

Sağlamayla ilgili sorunlar için bazı örnekler:

  • İşlem Kaynağı Sağlayıcısı API'si bir hata döndürür ve cloud-init sonuçta oluşan hatayı bildirir.
  • VM 40 dakika boyunca 'oluşturma' sırasında takılıyor ve VM oluşturma işlemi başarısız olarak işaretleniyor.
  • Özel veriler veya Kullanıcı verileri işlenmez.
  • Kısa ömürlü disk bağlanamıyor (SCSI kaynak diskleriyle birlikte gelen VM sku'ları için).
  • Kullanıcılar oluşturulmaz veya kullanıcı erişimi sorunları vardır.
  • Ağ doğru ayarlanmadı.
  • Değiştirme dosyası veya bölüm hataları.

Bu makalede cloud-init sorunlarını giderme adımları anlatılacaktır. Daha ayrıntılı bilgi için bkz . cloud-init ayrıntılı bakış.

Dikkat

Bu makalede Destek Sonu (EOS) durumu olan bir Linux dağıtımı olan CentOS'a başvuruda bulunur. Kullanımınızı göz önünde bulundurun ve buna göre planlayın. Daha fazla bilgi için bkz. CentOS Kullanım Süresi Sonu kılavuzu.

Cloud-init tarafından bildirilen ve hata olarak günlüğe kaydedilen hataları giderme

Cloud-init, sağlama işlemi sırasında Azure'a hata bildirimi yaparken yapılandırılmış hata mesajları yayar. Bu hata iletileri hatanın araştırılmasına yardımcı olmak için bir nedeni ve destekleyici verileri (zaman damgası, VM tanımlayıcısı, belge URL'si vb.) içerir.

Nedeni Açıklama Eylem
DHCP arabirimini bulamama Ağ arabirimi bulunamadı. VM'i silin ve yeniden oluşturun. Sorun devam ederse ağ sürücülerinin veya Azure'a özgü çekirdeğin yüklendiğinden emin olun ve eth0'un numaralandırıldığından emin olmak için önyükleme tanılamasını denetleyin.
DHCP kirası alınamaması DHCP hizmeti geçici platform sorunu nedeniyle yanıt veremiyor. Geçici bir Azure DHCP platformu sorunu nedeniyle VM'yi yeniden dağıtın (silme + yeniden oluşturma).
birincil DHCP arabirimini bulamama Birincil DHCP arabirimi bulunamadı. Birincil ağ arabiriminin adının eth0 olduğundan ve yeniden adlandırılmadığından emin olmak için önyükleme tanılamalarını kontrol edin.
IMDS sorgularken bağlantı zaman aşımı Geçici platform sorunu, NSG veya işletim sistemi güvenlik duvarı yapılandırması nedeniyle IMDS bağlantıları zaman aşımına uğrabilir. VM'i silin ve yeniden oluşturun. Sorun devam ederse, NSG veya OS güvenlik duvarının IMDS'ye erişimi engellemediğini doğrulayın.
IMDS okuma sorgulama zaman aşımı Geçici bir platform sorunu veya işletim sistemi güvenlik duvarı yapılandırması nedeniyle IMDS bağlantıları zaman aşımına uğrayabilir. VM'i silin ve yeniden oluşturun. Sorun devam ederse, işletim sistemi güvenlik duvarının IMDS'ye erişimi engellemediğini doğrulayın.
beklenmeyen meta veri ayrıştırma ovf-env.xml ovf-env.xml içinde hatalı biçimlendirilmiş VM meta verileri. Sorunu cloud-init izleyicisine gönderin.
konak kapatılmayı beklerken hata oluştu Sunucu kapatma işlemi sırasında hata oluştu. Sorunu cloud-init izleyicisine gönderin.
Azure-proxy-agent bulunamadı azure-proxy-agent ikili eksik. Görüntüde Azure proxy aracısının yüklü olduğundan emin olun. Daha fazla sorun giderme için MSP sorun giderme kılavuzuna bakın.
Azure-proxy-agent durum hatası Ara sunucu aracısı bir durum hatası bildirdi. Ara sunucu aracı günlüklerini gözden geçirin ve gerekirse güncelleştirin. Daha fazla sorun giderme için MSP sorun giderme kılavuzuna bakın.
işlenmeyen özel durum cloud-init içinde beklenmeyen bir hata oluştu. Sorunu cloud-init izleyicisine gönderin.

Önyükleme tanılamasını etkinleştirme ve denetleme konusunda yardım için bkz. Önyükleme Tanılaması.

Bu sorunlardan herhangi biri sonraki sağlama denemelerinde devam ederse, bunun nedeni görüntüdeki yanlış yapılandırmadır. Cloud-init sorunu olduğuna inanmak için bir neden varsa bunu cloud-init GitHub sorun izleyicisine bildirin.

cloud-init tarafından raporlanmayan diğer hataları giderme

Hataya bağlı olarak aşağıdaki adımları göz önünde bulundurun.

1. Adım: Dağıtımı test etmeden customData

Cloud-init, VM oluşturulduğunda kendisine geçirilen customData'yi kabul edebilir. İlk olarak, bu yapılandırmanın dağıtımlarla ilgili herhangi bir soruna neden olmadığından emin olmanız gerekir. Bazı yaygın sorunlar şunlar olabilir:

  • YAML hatalı biçimlendirilmiş
  • customData içindeki betikler başarısız oldu veya yanıt vermiyor
  • Cloud-init'in bağlı olduğu bir şeyi geçersiz kılma (örneğin, disk kurulumu veya ağ)
  • Veriler desteklenmeyen karakterler veya kodlama sorunları içeriyor Herhangi bir yapılandırma geçirmeden VM sağlamayı deneyin. VM kurulumu yapılamazsa, önerilen sorun giderme aşamalarını izleyin. Yapılandırma uygulanmadıysa 4. adıma bakın.

2. Adım: Görüntü gereksinimlerini gözden geçirme

VM sağlama hatasının birincil nedeni, işletim sistemi görüntüsünün Azure'da çalıştırma önkoşullarını karşılamamasıdır. Azure'da sağlamayı denemeden önce görüntülerinizin düzgün bir şekilde hazırlandığından emin olun.

Aşağıdaki makalelerde, Azure'da desteklenen çeşitli Linux dağıtımlarını hazırlama adımları gösterilmektedir:

Desteklenen Azure cloud-init görüntüleri için, Linux dağıtımlarında görüntüyü Azure'da doğru şekilde sağlamak için gerekli tüm paketler ve yapılandırmalar zaten vardır. VM'nizin kendi seçilmiş görüntünüzden oluşturamadığını fark ederseniz, isteğe bağlı customDataolarak cloud-init için yapılandırılmış olan desteklenen bir Azure Market görüntüsünü deneyin. customData Azure Marketplace görüntüsüyle düzgün çalışıyorsa, muhtemelen özenle hazırlanan görüntünüzle ilgili bir sorun vardır.

3. Adım: VM günlüklerini toplama ve gözden geçirme

VM sağlanamazsa, Azure 'oluşturma' durumunu 20 dakika boyunca gösterir, ardından VM'yi yeniden başlatır ve tekrar 20 dakika bekler. Son olarak, VM dağıtımını başarısız olarak işaretleyip bir hata ile OSProvisioningTimedOut işaretler.

VM çalışırken, sağlamanın neden başarısız olduğunu anlamak için VM'den günlüklere ihtiyacınız vardır. VM sağlamanın neden başarısız olduğunu anlamak için VM'yi durdurmayın. VM'yi çalışır durumda tutun. Günlükleri toplamak için başarısız VM'yi çalışır halde tutmanız gerekir. Günlükleri toplamak için aşağıdaki yöntemlerden birini kullanın:

Uyarı

Alternatif olarak, Azure portalını kullanarak el ile kurtarma VM'sini oluşturabilirsiniz. Daha fazla bilgi için bkz . Azure portalını kullanarak işletim sistemi diskini bir kurtarma VM'sine ekleyerek Linux VM sorunlarını giderme. İlk sorun gidermeye başlamak için, hatanın nerede oluştuğunu anlamak için seri günlükler ve cloud-init günlükleriyle başlayın. Daha sonra ek içgörüler sağlamaya yardımcı olmak için diğer günlükleri daha ayrıntılı bir bakış için kullanın.

Tüm günlüklerde "Hatalı", "UYARI", "UYAR", "err", "hata" ve "HATA" aramaya başlayın. Büyük/küçük harfe duyarlı aramaları yoksayması için yapılandırmayı ayarlamanız önerilir.

Alternatif olarak, gerekli tüm günlükleri toplamak için komutunu cloud‑init collect‑logs kullanın. Azure'ın en son cloud-init sürümleri (≥ 18.2), collect‑logs komutunu içerir:

Temel günlükleri toplar: /var/log/cloud-init*.log, örnek meta verileri, sistem bilgileri.

Her şeyi zaman damgasına sahip bir .tar.gz arşivine paketler.

Arşivi yerel olarak kaydeder (örneğin, /tmp/cloud-init-logs-timestamp.tar.gz).

Tip

Özel görüntü sorunlarını gideriyorsanız, görüntü sırasında bir kullanıcı eklemeyi düşünmelisiniz. Sağlama yönetici kullanıcıyı ayarlayamazsa işletim sisteminde oturum açmaya devam edebilirsiniz.

Günlükleri analiz etme

Her cloud-init günlüğünde nelere bakmanız gerektiği hakkında daha fazla ayrıntıyı burada bulabilirsiniz.

/var/log/cloud-init.log

Varsayılan olarak, hata ayıklama veya daha yüksek önceliklere sahip tüm cloud-init olayları /var/log/cloud-init.log öğesine yazılır. Bu günlük, cloud-init başlatma sırasında gerçekleşen her olayın ayrıntılı günlüklerini sağlar.

Örneğin:

2019-10-10 04:51:25,321 - util.py[DEBUG]: Failed mount of '/dev/sr0' as 'auto': Unexpected error while running command.
Command: ['mount', '-o', 'ro,sync', '-t', 'auto', u'/dev/sr0', '/run/cloud-init/tmp/tmpLIrklc']
Exit code: 32
Reason: -
Stdout:
Stderr: mount: unknown filesystem type 'udf'
2020-01-31 00:21:53,352 - DataSourceAzure.py[WARNING]: /dev/sr0 was not mountable

Bir hata veya uyarı bulduğunuzda, hataya veya uyarıya ulaşmadan önce cloud-init'in ne yapmaya çalıştığını anlamak için cloud-init günlüğünde geriye doğru okuyun. Çoğu durumda cloud-init işletim sistemi komutlarını çalıştırır veya hata oluşmadan önce sağlama adımları gerçekleştirir. Bu eylemler, hatanın neden günlüklerde göründüğünü açıklamaya yardımcı olabilir. Aşağıdaki örnek, cloud-init'in sorunla karşılaşmadan hemen önce bir cihazı bağlamayı denediğini göstermektedir.

2019-10-10 04:51:24,010 - util.py[DEBUG]: Running command ['mount', '-o', 'ro,sync', '-t', 'auto', u'/dev/sr0', '/run/cloud-init/tmp/tmpXXXXX'] with allowed return codes [0] (shell=False, capture=True)

Seri Konsol'a erişiminiz varsa cloud-init'in çalıştırmaya çalıştığı komutu yeniden çalıştırmayı deneyebilirsiniz.

için /var/log/cloud-init.log günlüğe kaydetme işlemi /etc/cloud/cloud.cfg.d/05_logging.cfg içinde de yeniden yapılandırılabilir. Cloud-init günlük kaydı hakkında daha fazla bilgi için cloud-init belgelerine bakın.

/var/log/cloud-init-output.log

cloud-initstdoutstderr bilgi alabilirsiniz. Bu veriler normalde yönlendirme tablosu bilgilerini, ağ bilgilerini, ssh ana bilgisayar anahtarı doğrulama bilgilerini stdout, ve stderr zaman damgalarıyla birlikte cloud-init'in her aşaması için içerir. İsterseniz stderr ve stdout günlük kaydı uygulamasından /etc/cloud/cloud.cfg.d/05_logging.cfgyeniden yapılandırılabilir.

Seri/önyükleme günlükleri

Cloud-init'in birden çok bağımlılığı vardır. Bu bağımlılıklar Ağ, depolama, ISO bağlama özelliği ve geçici diski bağlayıp biçimlendirme gibi Azure'daki görüntüler için gerekli önkoşullarda belgelenmiştir. Bu bağımlılıklardan herhangi biri hata verebilir ve cloud-init'in başarısız olmasına neden olabilir. Örneğin, VM, DHCP üzerinden bir IP adresi kiralayamıyorsa cloud-init başarısız olur.

Cloud-init'in neden sağlanamadığını bulamıyorsanız, cloud-init'in hangi aşamaları olduğunu ve modüllerin ne zaman çalıştığını anlamanız gerekir. Daha fazla bilgi için bkz . Cloud-init'te daha ayrıntılı bilgi.

4. Adım: Yapılandırmanın neden uygulanmadığını araştırma

Cloud-init içindeki her hata önemli bir sağlama hatasıyla sonuçlanmaz. Örneğin, bir cloud-init yapılandırmasında runcmd modülünü kullanırsanız, komuttan alınan sıfır olmayan bir çıkış kodu, VM hazırlamanın başarısız olmasına neden olur. Bu davranış, modülün cloud-init'in ilk üç aşamasında çekirdek sağlama adımlarından sonra çalışması nedeniyle oluşur. Yapılandırmanın neden uygulanmadığını gidermek için 3. adımda yer alan günlükleri ve cloud-init modüllerini manüel olarak inceleyin. Örneğin:

  • runcmd - Betikler hatasız çalışıyor mu? Bunların beklendiği gibi çalıştığından emin olmak için yapılandırmayı terminalden el ile çalıştırın.
  • Paketleri yükleme - VM'nin paket depolarına erişimi var mı?
  • VM'ye customData sağlanan yapılandırmayı denetleyin. Bu dosya içinde /var/lib/cloud/instances/<unique-instance-identifier>/user-data.txtbulunur.

Sonraki Adımlar

cloud-init yapılandırmayı atlarsa, nedenini belirlemek için her cloud-init aşamasını ve modül yürütme zamanlamasını inceleyin. Daha fazla bilgi için Cloud-init yapılandırmasına daha derinlemesine dalış bölümüne bakın.