Azure Stack Hub'da AKS altyapısı sorunlarını giderme

Azure Stack Hub'da AKS altyapısını dağıtırken veya bunlarla çalışırken bir sorun bulabilirsiniz. Bu makalede AKS altyapısı dağıtımınızla ilgili sorunları giderme adımlarına bakılacaktır. AKS altyapınız hakkında bilgi toplayın, Kubernetes günlüklerini toplayın ve özel betik uzantısı hata kodlarını gözden geçirin. AKS altyapısı için bir GitHub sorunu da açabilirsiniz.

Not

AKSe sürüm 0.75.3 ve üzeri için aks-engine aşağıdaki komutlar yerine aks-engineile aks-engine-azurestack başlar.

AKS altyapısı yükleme sorunlarını giderme

Önceki yükleme adımlarınız başarısız olduysa GoFish paket yöneticisini kullanarak AKS altyapısını yükleyebilirsiniz. GoFish kendisini platformlar arası bir Homebrew olarak tanımlar.

AKS altyapısını yüklemek için GoFish kullanma yönergelerini burada bulabilirsiniz.

Düğüm ve küme günlüklerini toplama

Düğüm ve küme günlüklerini toplama yönergelerini Düğüm ve Küme Günlüklerini Alma sayfasında bulabilirsiniz.

Ön koşullar

Bu kılavuzda Azure CLI ve AKS altyapısını indirdiğiniz varsayılır.

Bu kılavuzda, AKS altyapısını kullanarak bir küme dağıttığınız da varsayılır. Daha fazla bilgi için bkz. Azure Stack Hub'da AKS altyapısı ile Kubernetes kümesi dağıtma .

Günlükler alınıyor

Komutu, aks-engine get-logs kümenizle ilgili sorunları gidermek için yararlı olabilir. komutu bir dizi dosyayı üretir, toplar ve iş istasyonunuza indirir. Dosyalar düğüm yapılandırmasını, küme durumunu ve yapılandırmayı ve günlük dosyalarını ayarlamayı içerir.

Yüksek düzeyde: komut, her düğümde bir SSH oturumu oluşturarak, ilgili dosyaları toplayıp sıkıştıran bir günlük toplama betiği yürüterek ve .ZIP dosyasını yerel bilgisayarınıza indirerek çalışır.

SSH kimlik doğrulaması

Küme Linux düğümlerine SSH oturumu oluşturmak için geçerli bir SSH özel anahtarına ihtiyacınız olacaktır. Windows kimlik bilgileri API modelinde depolanır ve buradan yüklenir. Windows düğümlerinizde SSH'yi etkinleştirmek için true olarak ayarlayın windowsprofile.sshEnabled .

Günlükleri depolama hesabı kapsayıcısına yükleme

Küme günlükleri başarıyla alındıktan sonra, isteğe bağlı parametre --upload-sas-url ayarlanırsa AKS Altyapısı bunları bir Azure Depolama Hesabı kapsayıcısı üzerine kaydedebilir. AKS Altyapısı, kapsayıcı adının sağlanan SAS URL'sinin bir parçası olmasını bekler. Beklenen biçim şeklindedir https://{blob-service-uri}/{container-name}?{sas-token}.

Not

AD FS kimlik sağlayıcısını kullanan özel bulutlardaki depolama hesapları henüz desteklenmiyor.

Düğümler kümeye katılamıyor

Varsayılan olarak, aks-engine get-logs kümeye başarıyla katılan düğümlerden günlükleri toplar. Kümeye katılamayacak vm'lerden günlükleri toplamak için bayrağını --vm-namesayarlayın:

--vm-name k8s-pool-01,k8s-pool-02

aks-engine get-logs kullanımı

Dağıtılan bir kümeniz olduğunu ve başlangıçta bu kümeyi dağıtmak için kullanılan API modelinin konumunda _output/<dnsPrefix>/apimodel.jsondepolandığını varsayarsak, aşağıdaki gibi bir komut çalıştıran günlükleri toplayabilirsiniz:

aks-engine get-logs \
    --location <location> \
    --api-model _output/<dnsPrefix>/apimodel.json \
    --ssh-host <dnsPrefix>.<location>.cloudapp.azure.com \
    --linux-ssh-private-key ~/.ssh/id_rsa

Parametreler

Parametre Gerekli Açıklama
--Konum Yes Kümenin kaynak grubunun Azure konumu.
--api-model Yes Küme için oluşturulan API modelinin yolu.
--ssh-host Yes Kümedeki tüm düğümlere ulaşabilen bir SSH dinleyicisinin FQDN veya IP adresi.
--linux-ssh-private-key Yes Küme Linux düğümlerinde uzak oturum oluşturmak için kullanılabilecek bir SSH özel anahtarının yolu.
--output-directory No Çıkış dizini, eksikse dizininden --api-model türetilir.
--control-plane-only No Yalnızca denetim düzlemi düğümlerinden günlükleri toplayın.
--vm-names No Yalnızca belirtilen VM'lerden (virgülle ayrılmış adlar) günlükleri toplayın.
--upload-sas-url No Toplanan günlükleri karşıya yüklemek için Azure Depolama Hesabı SAS URL'si.

Özel betik uzantısı hata kodlarını gözden geçirme

AKS altyapısı, dağıtım görevlerini gerçekleştirmek üzere özel betik uzantısının (CSE) kaynağı olarak her Ubuntu Sunucusu için bir betik oluşturur. Betik hata oluşturursa içinde bir hata /var/log/azure/cluster-provision.logkaydeder. Hatalar portalda görüntülenir. Hata kodu, sorunun durumunu anlamak için yararlı olabilir. CSE çıkış kodları hakkında daha fazla bilgi için bkz cse_helpers.sh. .

Microsoft destek mühendisine Kubernetes günlükleri sağlama

Günlükleri toplayıp inceledikten sonra sorununuzu hala çözemezseniz, destek bileti oluşturma işlemini başlatmak ve topladığınız günlükleri sağlamak isteyebilirsiniz.

Operatörünüz, oluşturduğunuz günlükleri, Microsoft desteği tarafından gerekebilecek diğer sistem günlükleriyle birlikte birleştirebilir. Operatör bunları Microsoft'un kullanımına sunabilir.

Kubernetes günlüklerini çeşitli yollarla sağlayabilirsiniz:

  • Azure Stack Hub operatörünüze başvurabilirsiniz. Operatörünüz, destek olayı oluşturmak için .ZIP dosyasında depolanan günlüklerdeki bilgileri kullanır.
  • Kubernetes günlüklerinizi karşıya yükleyebileceğiniz bir depolama hesabının SAS URL'sine sahipseniz, günlükleri depolama hesabına kaydetmek için aşağıdaki komutu ekleyip SAS URL'sini işaretleyebilirsiniz:
    aks-engine get-logs -upload-sas-url <SAS-URL>
    
    Yönergeler için bkz. Günlükleri depolama hesabı kapsayıcısına yükleme.
  • Bulut operatörüyseniz şunları yapabilirsiniz:

GitHub sorunlarını açma

Dağıtım hatanızı çözemiyorsanız bir GitHub Sorunu açabilirsiniz.

  1. AKS altyapısı deposunda bir GitHub Sorunu açın.

  2. Şu biçimi kullanarak bir başlık ekleyin: CSE hatası: exit code <INSERT_YOUR_EXIT_CODE>.

  3. Soruna aşağıdaki bilgileri ekleyin:

    • Kümeyi dağıtmak için kullanılan küme yapılandırma dosyası apimodel.json. GitHub'a göndermeden önce tüm gizli dizileri ve anahtarları kaldırın.

    • Aşağıdaki kubectl komutunun çıktısı get nodes.

    • İyi durumda olmayan bir düğümden içeriği /var/log/azure/cluster-provision.log .

Sonraki adımlar