Aracılığıyla paylaş


AKS kümesinden gerçek zamanlı sistem içgörüleri yakalama

Bu makalede, Inspektor Gadget kullanarak Microsoft Azure Kubernetes Service (AKS) kümenizden gerçek zamanlı sistem içgörüleri toplama işlemi ele alınmaktadır. Makale, bu aracı AKS ortamınıza yüklemeye yönelik adım adım yönergeleri içerir. Ayrıca Inspektor Gadget'ın gerçek dünya sorunlarının etkili bir şekilde hata ayıklamasını yapmak için değerli bilgileri toplamanıza nasıl yardımcı olduğunu gösteren pratik örnekleri de inceler.

Tanıtım

Başlamak için aşağıdaki hızlı tanıtımı göz önünde bulundurun. Bir uygulamadan gelen DNS isteklerinin neden başarısız olduğunu bulmak zorunda olduğunuzu varsayalım. Inspektor Aracı'nı kullanarak, uygulamanızın çalıştığı Kubernetes ad alanında DNS trafiğini yakalayabilirsiniz:

kubectl gadget trace dns --namespace my-ns --output columns=+nameserver
K8S.NODE                           K8S.NAMESPACE  K8S.POD  PID      TID      COMM      QR  TYPE      QTYPE  NAME             RCODE NUMANSWERS NAMESERVER
aks-agentpool-97833681-vmss000001  my-ns          my-app   1349264  1349264  nslookup  Q   OUTGOING  A      www.example.com.       0          1.2.3.4
aks-agentpool-97833681-vmss000001  my-ns          my-app   1349264  1349264  nslookup  Q   OUTGOING  AAAA   www.example.com.       0          1.2.3.4
aks-agentpool-97833681-vmss000001  my-ns          my-app   1349264  1349264  nslookup  Q   OUTGOING  A      www.example.com.       0          1.2.3.4
aks-agentpool-97833681-vmss000001  my-ns          my-app   1349264  1349264  nslookup  Q   OUTGOING  AAAA   www.example.com.       0          1.2.3.4

Bu bilgilerden, DNS isteklerinin IP adresinde 1.2.3.4DNS sunucusuna yönlendirildiğini ancak sunucunun hiçbir zaman yanıt vermediğini görebilirsiniz.

Şimdi, bunun 1.2.3.4 varsayılan ad sunucusu yapılandırması olmadığını ve şüpheli bir işlemin çalışma zamanında yapılandırmayı değiştirdiğinden şüphelendiğini varsayalım. Bu tür durumlarda, Inspektor Aracı DNS tanılamasının ötesine geçer. Ayrıca kritik dosyalara (/etc/resolv.conf gibi) erişen ve bu dosyaları değiştirme amacına sahip işlemleri izlemenizi sağlar. Bu izleme özelliğini kullanmak için çıkıştaki bayrakları filtreleyerek yazma dosyası erişim modlarındanO_WRONLY herhangi birini (yalnızca yazma için açmak veya O_RDWR okuma ve yazma için açmak için):

kubectl gadget trace open --namespace my-ns \
    --filter path:/etc/resolv.conf,flags:'~(O_WRONLY|O_RDWR)' \
    --output columns=+flags
K8S.NODE                           K8S.NAMESPACE  K8S.POD  K8S.CONTAINER  PID      COMM  FD  ERR  PATH              FLAGS
aks-agentpool-97833681-vmss000001  my-ns          my-app   my-app         1365052  vi    3   0    /etc/resolv.conf  O_WRONLY|O_CREAT

Inspektor Gadget nedir?

Inspektor Gadget , Linux ve Kubernetes sistemlerinde hata ayıklamaya ve incelemeye ayrılmış araçlar oluşturmak, paketlemek, dağıtmak ve çalıştırmak için tasarlanmış bir çerçevedir. Bu araçlar ("araçlar"), eBPF programları olarak uygulanır. Birincil hedefleri, belirli sistem senaryolarıyla ilgili içgörüler sağlamak için alt düzey çekirdek verilerini toplamaktır. Inspektor Gadget çerçevesi, Toplanan verilerin ilişkilendirmesini Kubernetes kaynakları gibi üst düzey başvuruları kullanarak yönetir. Bu tümleştirme, düşük düzey içgörüler ile ilgili üst düzey bağlamları arasında sorunsuz bir bağlantı olmasını sağlar. Tümleştirme, sorun giderme sürecini ve ilgili bilgilerin toplanmasını kolaylaştırır.

Gadgets

Inspektor Gadget, sistemdeki yaygın durumların hatalarını ayıklamak ve gözlemlemek için tasarlanmış bir dizi yerleşik araç sağlar. Örneğin, bu tür araçları kullanarak kümenizde aşağıdaki olayları izleyebilirsiniz:

  • İşlem oluşturma
  • Dosya erişimi
  • TCP bağlantıları veya DNS çözümlemesi gibi ağ etkinliği

Araçlar, topladıkları bilgileri farklı mekanizmalar kullanarak sunar. Örneğin, bazı araçlar sizi belirli zamanlarda sistem durumu hakkında bilgilendirebilir. Belirli bir olay gerçekleştiğinde diğer araçlar raporlayabilir veya düzenli güncelleştirmeler sağlayabilir.

Bunlar sadece birkaç örnektir. Resmi belgelerde her aracın ayrıntılı açıklamaları ve örnekleri sağlanır, böylece özel kullanım örneğiniz için en uygun aracı belirleyebilirsiniz. Ancak, mevcut araçların şu anda kapsamadığı bir kullanım örneği bulursanız, Inspektor Aracı çalıştır komutunu kullanarak kendi eBPF programlarınızı çalıştırmanıza olanak tanır. Inspektor Gadget çerçevesi özel programlarınızın derlemesini, paketlemesini ve dağıtımını işlediğinden, benzersiz gereksinimleriniz için süreci kolaylaştırır. Ayrıca, programınızda topladığınız verileri zenginleştirmek için üst düzey meta veriler toplar.

Kullanım örnekleri

Bu makalenin başında sunulan tanıtımı tamamlamak için, Inspektor Gadget'ın hata ayıklama sorunlarını çözmenize nasıl yardımcı olduğunu gösteren sorunların ve pratik senaryoların listesini derledik. Aşağıdaki örneklerde Inspektor Gadget'ın potansiyeli gösterilir. Ancak bu aracın özellikleri bu senaryoların ötesine uzanır. Bu, Inspektor Aracı'nı Kubernetes hata ayıklama ve gözlemlenebilirliğinin karmaşıklıklarında gezinmek için değerli bir varlık haline getirir.

Sorun alanı Belirtiler Sorun giderme
Yoğun disk kullanımlı uygulamalar Yüksek bellek veya CPU kullanımı ya da tutarsız düğüm hazırlığı Bir uygulama, kapsamlı günlük kaydı gibi disk okuma/yazma işlemleriyle tutarlı bir şekilde etkileşime geçebilir. Inspektor Gadget'ı kullanarak, hangi kapsayıcıların daha fazla blok G/Ç oluşturabileceğini gerçek zamanlı olarak belirleyebilirsiniz. Ya da daha belirgin olarak, bir dosyaya daha fazla okuma ve yazma işlemine neden olan kapsayıcıyı bulabilirsiniz.
"Her zaman DNS'tir" Yüksek uygulama gecikme süresi, zaman aşımları veya kötü son kullanıcı deneyimi

Inspektor Aracı'nı kullanarak kümedeki tüm DNS sorgularını ve yanıtlarını izleyebilirsiniz. Özellikle Inspektor Aracı, DNS'nin uygulamanızın performansını etkileyip etkilemediğini belirlemenize yardımcı olan aşağıdaki bilgileri sağlar:

  • Sorgu başarılı
  • Yanıtın hata içerip içermediği
  • Arama için kullanılan ad sunucusu
  • Sorgu yanıtı gecikme süresi
Dosya sistemi erişimi Uygulama yanlış davranıyor veya düzgün çalışmıyor

Uygulama, dosya sistemindeki belirli yapılandırmalara, günlüklere veya diğer önemli dosyalara erişemeyebilir. Bu tür senaryolarda, Inspektor Aracı erişim sorunlarını tanılamak için podların içindeki tüm açık dosyaları izlemenizi sağlar. Uygulamanız bir dosyayı açmaya çalıştığında aşağıdaki bilgileri bulabilirsiniz:

  • Dosyayı açmak için kullanılan bayraklar (örneğin, O_RDONLY, O_WRONLY, O_RDWR vb.)
  • Dosya açma girişiminin başarılı olup olmadığı
  • Döndürülen hata (dosya açma girişimi başarısız olursa)

Örneğin, dosyayı açma girişimi 2 (ENOENT) hatası nedeniyle başarısız olursa, uygulama büyük olasılıkla var olmayan bir dosyayı açmaya çalışıyor olabilir. Başka bir deyişle kodda yazım hatası olabilir veya dosya farklı bir yolda kullanılabilir.

Uzaktan kod yürütme (RCE) Uygulama boşta kalma dönemlerinde yüksek CPU kullanımında belirgin olan şifreleme gibi yetkisiz kod yürütme Saldırganlar bir sisteme bu tür bir saldırı yapmaya çalıştığında genellikle kullanarak bashkodu çalıştırmaları gerekir. Inspektor Gadget, özellikle gibi bashkritik komutları içeren işlemler olmak üzere yeni işlemlerin oluşturulmasını izlemenizi sağlar.

Aks kümesine Inspektor Aracı yükleme

One-Click Inspektor Gadget dağıtımı

Aşağıdaki düğme seçilerek bir AKS kümesi otomatik olarak oluşturulur ve Inspektor Aracı kümeye dağıtılır. Dağıtım tamamlandıktan sonra, sağlanan kabuk ortamında Inspektor Aracı'nın tüm özelliklerini keşfedebilirsiniz.

AKS kümesinde Inspektor Aracı dağıtma

"kubectl gadget" eklentisini çalıştırarak Inspektor Aracı'nı yükleme

Bu bölümde eklentiyi çalıştırarak kubectl gadget AKS kümenize Inspektor Aracı yükleme adımları özetlenmiştir. Yükleme iki bölümden oluşur:

  • Eklentiyi kubectl gadget bilgisayarınıza yükleme

  • Inspektor Aracı'nı kubectl gadget kümeye yüklemek için eklentiyi çalıştırma

    Uyarı

    Inspektor Gadget'ı dağıtmak ve kullanmak için birçok mekanizma mevcuttur. Bu mekanizmaların her biri belirli kullanım örneklerine ve gereksinimlere göre uyarlanmıştır. Bu mekanizmalardan birkaçını uygulamak için kubectl aracı eklentisini kullanabilirsiniz, ancak bunların tümünü uygulayamayın. Örneğin, eklentiyi kullanarak Inspektor Aracı'nın kubectl gadget dağıtılması Kubernetes API sunucusunun kullanılabilirliğine bağlıdır. Kullanılabilirliği zaman zaman tehlikeye girmiş olabileceğinden böyle bir bileşene bağımlı olamıyorsanız dağıtım mekanizmasını kubectl gadgetkullanmaktan kaçınmanızı öneririz. Bu ve diğer kullanım örnekleri hakkında daha fazla bilgi için Inspektor Aracı belgelerine bakın.

Önkoşullar

Bölüm 1: Kubectl eklenti aracını bilgisayarınıza yükleme

Eklentiyi yüklemek kubectl gadget için kullanmanızı krew öneririz.

Not

Belirli bir sürümü yüklemek veya kaynaktan derlemek için bkz . GitHub'da kubectl aracını yükleme.

kubectl krew install gadget

Şimdi komutunu çalıştırarak version yüklemeyi doğrulayın:

kubectl gadget version

Komut version size istemcinin sürümünü gösterir (kubectl gadget eklenti), ancak henüz sunucuda (küme) yüklenmediğini de bildirir:

Client version: vX.Y.Z
Server version: not installed

Bölüm 2: Inspektor Aracını kümeye yükleme

Aşağıdaki komut DaemonSet denetleyicisini dağıtır.

Not

Aşağıdaki listede gösterildiği gibi dağıtımı özelleştirmek için çeşitli seçenekler sağlanır:

  • Belirli bir kapsayıcı görüntüsünü kullanma
  • Belirli düğümlere dağıtma
  • Özel ad alanına dağıtma

Bu seçenekler hakkında bilgi edinmek için resmi belgelerin Kümede Yükleme bölümüne bakın.

kubectl gadget deploy

Komutunu yeniden çalıştırarak version yüklemeyi doğrulayın:

kubectl gadget version

Bu kez, istemcinin ve sunucunun doğru yüklendiği gösterilir:

Client version: vX.Y.Z
Server version: vX.Y.Z

Üçüncü taraf bilgileri hakkında yasal uyarı

Bu makalede adı geçen üçüncü taraf ürünleri Microsoft'tan bağımsız şirketler tarafından üretilmektedir. Microsoft, bu ürünlerin performansı veya güvenilirliği ile ilgili örtük veya başka türlü hiçbir garanti vermez.

Üçüncü taraf iletişim bildirimi

Microsoft, bu konu hakkında ek bilgi bulmanıza yardımcı olmak için üçüncü taraf iletişim bilgileri sağlar. Bu iletişim bilgileri bildirimde bulunmadan değişebilir. Microsoft, üçüncü taraf iletişim bilgilerinin doğruluğunu garanti etmez.

Yardım için bizimle iletişim kurun

Sorularınız varsa veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteğine sorun. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.