مجموعه ای منبع باز از ابزارهای سطح پایین به شما کمک می کند تا با ارائه داده های کلیدی از قلب هسته لینوکس، برنامه های کاربردی ابری را عیب یابی کنید.
مهندسی پلتفرم در حال تبدیل شدن به یک مفهوم متقاعدکننده برای شرکتها است، زیرا آنها به طور فزایندهای منابع را به توسعه برنامههای کاربردی بومی ابری اختصاص میدهند. فرقی نمیکند از نمونههای Kubernetes خود در مراکز دادهتان استفاده میکنید یا با محیطهای مدیریتشده در ابرهای عمومی کار میکنید، باید نحوه عملکرد آنها را بدانید. استفاده از نسل جدیدی از ابزارهای نظارتی و امنیتی.
مدیریت ابزارهای ارکستراسیون کانتینری مانند Kubernetes با استفاده از ابزارهای سنتی دشوار است. از آنجایی که آنها کانتینرهای جدید را بر اساس استفاده از منابع یا در پاسخ به رویدادها نمونه سازی می کنند، رفتار آنها قابل پیش بینی نیست. اگر از ابزار نظارت مبتنی بر عامل استفاده میکنید، نمایندگان باید با راهاندازی کانتینرها با ابزارهای نظارتی ثبتنام کنند و بهعنوان توقف کانتینرها از ثبت نام خارج شوند. این فرآیند به ابزارها پیچیدگی میافزاید و استفاده از دادههای بهدستآمده برای به دست آوردن تجزیه و تحلیل کامل علت اصلی یا ردیابی یک فعالیت غیرعادی دشوار است.
مفاهیم بومی ابری وجود دارد که کمک می کند، مانند مشاهده پذیری، اما مشخص شده است که ما به راهی برای خارج شدن از محیط ارکستراسیون نیاز داریم، در حالی که هنوز عملیات محاسباتی و شبکه ای آن را ردیابی می کنیم. با کانتینرهایی که توسط هایپروایزرهای مدرن یا شیاطین کانتینری سطح پایین میزبانی میشوند، به یک روش سطح پایینتر برای نظارت بر سیستمها نیاز داریم.
دیدن از داخل هسته لینوکس
در گذشته این کار شامل کار با کدهای سطح هسته، اضافه کردن ماژولهای هسته خود یا شخص ثالث، و کامپایل مجدد هسته لینوکس هر بار که یک ابزار جدید یا بهروزرسانی میآید، بود. اگر تا به حال لینوکس را از ابتدا کامپایل کردهاید، یا یک ماژول هسته نوشتهاید، میدانید که این سادهترین کار نیست و اغلب بسیار وقتگیر است. اگر از یک تصویر آماده برای اجرا از یک ارائه دهنده ابر استفاده می کنید، بعید است که مجوزها یا دسترسی های لازم را داشته باشید.
خوشبختانه، ما گزینهای داریم که از این همه پیچیدگی جلوگیری میکند و به ما دسترسی کنترلشده به عملیات هسته را میدهد، به شکل eBPF، فیلترهای بسته توسعهیافته برکلی. با eBPF میتوانیم کد را به هسته لینوکس (و ویندوز)، با استفاده از یک تأییدکننده برای اطمینان از امنیت تزریق کنیم. قلابها در هسته رویدادهایی را ایجاد میکنند که برنامههای eBPF را فعال میکنند و امکان دسترسی به شبکه و سایر عملیاتهای سطح پایین را فراهم میکنند.
این رویکرد به ابزارهای نظارتی اجازه میدهد تا دادههای مربوط به عملیات محیط Kubernetes میزبانی شده را دریافت کنند، عملیاتهای کلیدی را ردیابی کنند و به برنامههای خارجی مانند Prometheus، Cilium و Retina اجازه میدهد تا دادهها را ثبت کنند، آنها را به کانتینرهای جداگانه و به برنامههای کاربردی مرتبط کنند. توسط Kubernetes تنظیم شده است. با پشتیبانی از eBPF در هسته لینوکس، میتوانید از آن برای نظارت نه تنها نمونههای فیزیکی در سختافزار خود، بلکه میزبانهای ماشین مجازی در یک سرویس ابری استفاده کنید.
معرفی Inspektor
شرکت تابعه مایکروسافت Kinvolk بیشتر به دلیل توزیع Flatcar Linux شناخته شده است، اما به سرعت در حال تبدیل شدن به یکی از مراکز منبع باز مایکروسافت است. برتری در حالی که Deis Labs بر توسعه بومی ابری متمرکز شده است، Kinvolk بیشتر با مهندسی و عملیات پلتفرم هماهنگ است و ابزارهایی مانند Headlamp Kubernetes UI را ارائه می دهد. در حدود پنج سال گذشته، Kinvolk روی مجموعه ای از ابزارهای نظارت و ضبط eBPF کار کرده است. a>، همراه با مجموعهای از «ابزارکهای» هسته با مدیریت فضای کاربر و خدمات نمایش.
به نام کارآگاه فرانسوی بخشی-ربات، پروژه ابزارک Inspektor مجموعه ای رو به رشد از ابزارها و همچنین چارچوبی برای توسعه ابزارهای خود ارائه می دهد. ترکیبی از اسبابکها از ابزارهایی که پیکربندیهای Kubernetes شما را بررسی میکنند تا ابزارهایی که اطلاعات عملکرد را در مورد خوشه شما جمعآوری میکنند، متغیر است. یا برای پروفایل یا برای تجزیه و تحلیل بلادرنگ. مفیدترین مجموعه به شما امکان می دهد تعدادی از معیارهای کلیدی، از جمله عملیات شبکه سطح پایین را ردیابی کنید. ممکن است مشکل شما DNS نباشد، اما Inspektor Gadget می تواند به شما کمک کند ثابت کنید که اینطور نیست.
در حالی که ابزارهایی مانند Falco و Retina برای مشاهدات طولانیمدت زیرساخت Kubernetes در نظر گرفته شدهاند، نصب مستقل Inspektor Gadget برای تحقیقات موقت بسیار مفید است. و اکتشافات این چیز بدی نیست. مهندسان پلتفرم به ابزارهایی نیاز دارند که بتوانند به سرعت برای تشخیص مشکلات خاص مورد استفاده قرار گیرند، بدون اینکه نیازی به صرف زمان برای راهاندازی و پیکربندی راهحل مشاهدهپذیری کامل داشته باشند.
با Inspektor Gadget میتوانید اطلاعات مورد نیاز برای نشان دادن چه چیزی و چرا اشتباه است را دریافت کنید و سپس علل احتمالی را از خط فرمان Kubernetes کاوش کنید. دادههایی که دریافت میکنید، در حالی که سطح پایینی دارند، با فضاهای نامی در خوشه Kubernetes شما مرتبط است و به شما امکان میدهد به سرعت غلافها و ظروف خاصی را جدا کنید.
میتوانید از ابزار Inspektor به تنهایی یا از طریق ابزاری استفاده کنید مانند Microsoft Defender for Containers، که اخیراً یک جزء حسگر اضافه کرده است که از ابزار Inspektor Gadget برای جستجوی تهدیدهایی مانند فرار کانتینر استفاده می کند. اینها برخی از مخاطره آمیزترین مصالحه ها برای Kubernetes هستند، زیرا به کدهای مخرب اجازه می دهند جداسازی کانتینر را بشکنند و به سیستم عامل میزبان دسترسی پیدا کنند. مایکروسافت از ابزار Inspektor برای جایگزینی ابزارهای Defender for Containers استفاده میکند که قبلاً توسط پروبهای eBPF Sysdig پشتیبانی میشدند.
اجرای ابزار Inspektor در خوشه شما
شروع به کار با Inspektor Gadget به اندازه کافی آسان است. جعبه ابزار هر دو پلاگین kubectl و daemonset را در خوشه Kubernetes شما نصب می کند. میتوانید از ابزار نصبکننده krew برای نصب ابزارهای kubectl استفاده کنید یا با دانلود یک باینری یا کامپایل کد منبع و سپس افزودن فایل اجرایی به مسیر خود، آن را به صورت دستی نصب کنید.
هنگامی که ابزار خط فرمان ابزارک را نصب کردید، میتوانید دیمونست را با استفاده از دستور استقرار آن، ایجاد یک pod برای اسبابکهای خود و اعمال کنترلهای امنیتی مناسب، مستقر کنید. شما می توانید دیمونست را در کل خوشه خود یا در یک گره یا گره خاص مستقر کنید. سپس می توان آن را طوری پیکربندی کرد که در کنار کانتینرهای جدید شروع شود. برای حذف، به سادگی از دستور undeploy استفاده کنید.
نیازی به نصب Inspektor Gadget در Kubernetes ندارید. می توان آن را به عنوان یک برنامه لینوکس روی سرور میزبان نصب کرد و به شما امکان می دهد کانتینرهای خارج از Kubernetes را ردیابی کنید. اگرچه این رویکرد برای Kubernetes میزبان ابری مناسب نیست، میتواند برای نظارت بر نصبهای آزمایشی و خوشههای درون محل مفید باشد.
پس از نصب، میتوانید از ابزارهای Inspektor Gadget برای نصب کد eBPF در هسته سیستم عامل میزبان خود استفاده کنید و ابزارها را به عملکردهای هسته خاصی متصل کنید. کد eBPF هنگام ایجاد syscals خاص اجرا میشود و به ابزار اجازه میدهد تا عملیات را ردیابی کند.
نتایج ردیابی در بافرهای هسته نوشته میشوند ، و سپس توسط کد ابزار فضای کاربران بازخوانی می شود و داده های جریانی را از طریق Kubernetes CLI نمایش می دهد. در پسزمینه، یک مدیر ردیاب ابزارهای مختلف در حال استفاده را با نقشهای از کانتینرها و فضاهای نام مرتبط با آنها ردیابی میکند، بنابراین دادهها مستقیماً با یک ظرف خاص مرتبط میشوند. نتایج بر اساس کانتینر و رویداد فیلتر میشوند و به شما راهی میدهند تا به سرعت در رویدادهایی که میخواهید نظارت کنید، شیرجه بزنید.
Inspektor Gadget یک ابجک Prometheus ارائه میکند که معیارها را ارائه میکند. به یک نمونه Prometheus، به آنها اجازه می دهد تا با ابزارهایی مانند Grafana تجسم شوند یا توسط سایر ابزارهای مدیریت Kubernetes تجزیه و تحلیل شوند. پشتیبانی از Prometheus به شما امکان میدهد ابزارها را در پسزمینه اجرا کنید، بهویژه اگر از ردیابهای شبکه یا ابزارهای نمایهسازی برای دریافت تصویری از عملکرد کلی یک برنامه کاربردی و یک کلاستر و همچنین شبکه زیربنایی استفاده میکنید.
توسعه ابزارها
به طور مفید Inspektor Gadget میتواند با سایر برنامههای eBPF کار کند و اطلاعات بیشتری را به درخواستهای اولیه اضافه کند. می توانید یک پروب ساده eBPF بنویسید تا به دنبال یک رویداد خاص بگردید و سپس Inspektor Gadget را فراخوانی کنید تا جزئیات فضای نام mount فعلی را به گزارش رویداد اضافه کنید. به این ترتیب میتوانید به سرعت کد را برای جستجوی آسیبپذیریهای حیاتی جدید اضافه کنید و به شما امکان میدهد آن دادهها را از طریق Inspektor Gadget CLI به برنامه نظارتی خود منتقل کنید.
ابزارهایی مانند Inspektor Gadget برای مقابله با ماهیت غیرقابل پیش بینی برنامه های کاربردی ابر مهم هستند. با استفاده از eBPF میتوانیم به علفهای هرز شبکههای پیچیده وارد شویم و دقیقاً بفهمیم که وقتی کانتینرها با یکدیگر ارتباط برقرار میکنند چه اتفاقی میافتد و به ما امکان میدهد زیرساخت مناسب برای کد خود بسازیم. در اینجا چیزهای زیادی برای دوست داشتن وجود دارد، هم از نظر نحوه ادغام Inspektor Gadget با ابزارهای آشنای Kubernetes و هم اینکه چگونه می توان آن را با ابزارهای خود گسترش داد تا مشکلات خود را برطرف کند.
هنگامی که Kubernetes بالغ میشود، مهم است که راههایی برای دیدن آنچه در زیر کاپوت اتفاق میافتد داشته باشیم. بدون آن دادهها، نمیتوانیم مطمئن باشیم که معماریهای درجه یک سازمانی را ارائه میکنیم که برای پشتیبانی از کد و کاربرانمان ضروری هستند. eBPF و Inspektor Gadget یک راه مهم برای ارائه این بلوغ، در کنار ابزارهای مشاهدهپذیری هستند که به ما امکان تفسیر و تجزیه و تحلیل دادهها و ارائه یک پلتفرم بومی ابری قابل مدیریت را میدهند.
پست های مرتبط
استفاده از ابزار Inspektor برای قابلیت مشاهده Kubernetes
استفاده از ابزار Inspektor برای قابلیت مشاهده Kubernetes
استفاده از ابزار Inspektor برای قابلیت مشاهده Kubernetes