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önergeler içerir. Ayrıca, Inspektor Gadget'ın gerçek dünya sorunlarının etkili hata ayıklamasını yapmak için değerli bilgileri toplamanıza nasıl yardımcı olduğunu gösteren pratik örnekleri de inceler.
Demo
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 anlamak zorunda olduğunuzu varsayalım. Inspektor Gadget'ı 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.4
DNS 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 Gadget 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 denetlemeye ayrılmış araçları derlemek, 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ına ilişkin içgörüler sağlamak için düşük düzey çekirdek verilerini toplamaktır. Inspektor Gadget çerçevesi, Kubernetes kaynakları gibi üst düzey başvuruları kullanarak toplanan verilerin ilişkilendirmesini yönetir. Bu tümleştirme, alt 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, bir 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 her gerçekleştiğinde diğer araçlar rapor edebilir veya düzenli güncelleştirmeler sağlayabilir.
Bunlar yalnızca birkaç örnektir. Resmi belgeler, özel kullanım örneğiniz için en uygun aracı belirleyebilmeniz için her aracın ayrıntılı açıklamalarını ve örneklerini sağlar. Ancak, mevcut araçların şu anda kapsamadığını belirten bir kullanım örneği bulursanız, Inspektor Gadget esneklik sunar. Betik komutunu çalıştırarak eBPF izleme dili bpftrace ile uyumlu betikler çalıştırabilirsiniz. Veya komutunu çalıştırarak kendi eBPF programlarınızı çalıştırabilirsiniz. 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ı gidermenize 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 Gadget'ı 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. Veya 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 düşük son kullanıcı deneyimi | Inspektor Gadget'ı kullanarak kümedeki tüm DNS sorgularını ve yanıtlarını izleyebilirsiniz. Özellikle Inspektor Gadget, DNS'nin uygulamanızın performansını etkileyip etkilemediğini belirlemenize yardımcı olacak aşağıdaki bilgileri sağlar:
|
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 Gadget, erişim sorunlarını tanılamak için podların içindeki tüm açık dosyaları izlemenize olanak tanır. Uygulamanız bir dosyayı açmaya çalıştığında aşağıdaki bilgileri bulabilirsiniz:
Ö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ışıyordur. 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 sistemde bu tür bir saldırı yapmaya çalıştığında genellikle kullanarak bash kodu çalıştırmaları gerekir. Inspektor Gadget, özellikle gibi bash kritik komutları içeren işlemler olmak üzere yeni işlemlerin oluşturulmasını izlemenizi sağlar. |
Aks kümesinde Inspektor Gadget'ı 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 Gadget'ın tüm özelliklerini keşfedebilirsiniz.
"kubectl gadget" eklentisini çalıştırarak Inspektor Gadget'ı yükleme
Bu bölümde eklentiyi çalıştırarak kubectl gadget
AKS kümenize Inspektor Gadget yükleme adımları özetlenmiştir. Yükleme iki bölümden oluşur:
Eklentiyi
kubectl gadget
bilgisayarınıza yüklemekubectl gadget
Inspektor Gadget'ı kümeye yüklemek için eklentiyi çalıştırmaUyarı
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 bazılarını uygulamak için kubectl aracı eklentisini kullanabilirsiniz, ancak bunların tümünü uygulayamayın. Örneğin, eklentiyi
kubectl gadget
kullanarak Inspektor Gadget'ın 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ı değilseniz, dağıtım mekanizmasınıkubectl gadget
kullanmaktan kaçınmanızı öneririz. Bu ve diğer kullanım örnekleri hakkında daha fazla bilgi için Inspektor Gadget belgelerine bakın.
Önkoşullar
Kubernetes kubectl komut satırı aracı. Azure CLI'niz varsa kubectl yüklemek için az aks install-cli komutunu çalıştırabilirsiniz.
Aks kümesi. AKS kümeniz yoksa Azure CLI kullanarak veya Azure portal kullanarakbir küme oluşturun.
kubectl'deki eklentiler için krew paket yöneticisi. Bu paket yöneticisini yüklemek için krew hızlı başlangıç kılavuzunu izleyebilirsiniz.
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
komutu version
size istemcinin (kubectl gadget
eklenti) sürümünü gösterir, ancak henüz sunucuda (küme) yüklenmediğini de bildirir:
Client version: vX.Y.Z
Server version: not installed
Bölüm 2: Kümeye Inspektor Aracı 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 şekilde 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ü tarafla iletişim sorumluluk reddi
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 önceden haber verilmeksizin değiştirilebilir. Microsoft, üçüncü taraf iletişim bilgilerinin doğruluğunu garanti etmez.
Yardım için bize ulaşın
Sorularınız veya yardıma ihtiyacınız varsa bir destek isteği oluşturun veya Azure topluluk desteği isteyin. Ürün geri bildirimini Azure geri bildirim topluluğuna da gönderebilirsiniz.
Geri Bildirim
https://aka.ms/ContentUserFeedback.
Çok yakında: 2024 boyunca, içerik için geri bildirim mekanizması olarak GitHub Sorunları’nı kullanımdan kaldıracak ve yeni bir geri bildirim sistemiyle değiştireceğiz. Daha fazla bilgi için bkz.Gönderin ve geri bildirimi görüntüleyin