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.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 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:
|
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:
Ö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 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ü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.
"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üklemeInspektor Aracı'nı
kubectl 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 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 gadget
kullanmaktan 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
Kubernetes kubectl komut satırı aracı. Azure CLI'nız 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ını kullanarak bir 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
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ü 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.