پست مهمان توسط کاپیتان داکر Gianluca Arbezzano
اخیراً کوری کوین از LastWeekInAWS مقاله ای نوشت که باعث شد فکر کنم "هیچ کس دیگر به سیستم عامل اهمیت نمی دهد". لطفاً نگاهی به آن بیندازید! من این ایده را دوست دارم که هیچ کس به اینکه برنامه اش در کجا اجرا می شود اهمیتی ندهد. توسعه دهندگان فقط می خواهند که آنها اجرا شوند.

کمی زمینه در مورد Tinkerbell
من یکی از نگهدارندگان پروژه Tinkerbell هستم. یک موتور گردش کار فلزی برهنه که به شدت متکی به ظروف و داکر است تا کار خود را انجام دهد. سعی می شود پاسخی برای یک سوال منطقی پیدا کند: چگونه اتاقهای سخت افزار را مدیریت کنیم؟ بیشتر در عمل ، چگونه می توانیم یک API در بالای مراکز داده همه قرار دهیم؟
کانتینرها انتزاعی است که تصمیم گرفتیم هنگام اجرای کد قابل استفاده مجدد (که ما آن را اقدامات می نامیم) در سخت افزار شخص دیگری استفاده کنیم. عمدتا به این دلیل که توزیع ، بسته بندی و زمان استفاده از مشکلات حل شده است. همه می دانند که چگونه یک کانتینر بسازند ، فشار بدهند و آن را اداره کنند.
من فکر می کنم این سناریو با داستان برجسته کوری مقایسه می شود. سیستم های عامل یک انتزاع شناخته شده و شناخته شده برای اکثر موارد استفاده است.
سیستم عامل ویژه تأمین فلزات برهنه
چرخه حیات یک سرور فلزی برهنه را می توان به شرح زیر خلاصه کرد:
- شما نصب می کنید SSD ، RAM و سرور خود را رک می کنید ، آن را با انرژی و داده کابل می کنید
- اگر BMC دارید ، می توانید از راه دور سرور را راه اندازی کنید. در غیر این صورت ، شما باید دکمه روشن / خاموش را به صورت دستی فشار دهید
- BIOS به دنبال دستگاه های قابل بوت ، USB ، دیسک است ، اما نمی تواند چیزی برای راه اندازی پیدا کند زیرا درایور دیسک چیزی نیست که سرور امروزه داشته باشد و اپراتورهایی نیز وجود ندارند در حال اجرا با کارتهای USB در مراکز داده مدرن
- معمولاً آخرین فرصتی که سرور برای راه اندازی مجدد کار می کند از طریق راه اندازی مجدد اینترنت است. یک فناوری محبوب برای آن PXE (iPXE جدید) نامیده می شود.
- PXE درخواست DHCP می کند. شما می توانید آن را به عنوان آخرین SOS تصور کنید: "لطفاً به من بگویید چه کاری انجام دهم."
- اگر DHCP گوش دهد ، می تواند با یک پیام نجات دوباره پخش کند تا کارها را با اسکریپتی که PXE می تواند اجرا کند ساده کند.
معمولاً ، اسکریپت شامل اطلاعات بوت برای یک سیستم عامل ، یک سیستم عامل لینوکس است که می تواند با RAM کار کند. به عنوان مثال ، شما می توانید Netboot Alpine را بسازید.
اکنون این سخت افزار دارای یک سیستم عامل زودگذر (روی RAM) کاملاً عملیاتی است. Tinkerbell دو مورد از آنها را توزیع می كند ، یكی به نام OSIE و دیگری به نام هوك:
- OSIE یكی است كه توسط Equinix Metal به صورت داخلی اداره می شود تا كل پیشنهاد ابری خود را ارائه دهد
- Hook جدیدترین موردی است كه جامعه Tinkerbell با استفاده از LinuxKit توسعه می دهد [19659019] OSIE یا قلاب برای تهیه فلزات برهنه ضروری هستند زیرا منبع تأمین نیرو برای کارهایی هستند که می توانید از طریق خود سخت افزار انجام دهید. Tinkerbell یک docker daemon راه اندازی می کند ، و مجموعه ای از اقدامات را بارگیری و اجرا می کند (همانطور که کانتینرهای Docker را می خوانید).
این اقدامات در کنار هم باعث ایجاد جریاناتی می شوند که به نظر می رسد:
- تهیه: فلش و نصب پایان سیستم عامل است بر روی دیسک ، بنابراین بوت بعدی ، می توانید به اوبونتو ، CentOS ، CoreOS یا آنچه نیاز دارید دسترسی پیدا کنید
- Deprovision: شما می توانید دیسک ها را پاک کنید و سرور را برای استفاده جدید با نام تجاری بعدی در دسترس قرار دهید
این مقاله در مورد این است که چرا ما LinuxKit را انتخاب کنید ، و امیدوارم که به شما اطلاعات بیشتری در مورد زمان استفاده از آن نیز بدهد!
هیچ کس به سیستم عامل اهمیت نمی دهد ، اما نمی توانید از یکی جلوگیری کنید
همانطور که می توانید تصور کنید که مختصراً درباره Tinkerbell بخوانید وقتی نوبت به تهیه فلزات برهنه می رسد ، هر بیت مهم است زیرا چرخه عمر سخت افزار سرد است و به این سرعت نیست. کنترل هر مرحله بسیار مهم است ، از زمانی که سرور قدرت گرفته تا زمانی که درخواست DHCP را هنگامی که سخت افزار سیستم عامل حافظه را بوت می کند ، انجام می دهد تا اینکه سرانجام آنچه را که می خواهید اجرا کنید!
وقتی صحبت از سیستم عامل ها و سیستم عامل می شود حفظ توزیع توسط لینوکس کار زیادی است! حتی اگر به یک مورد خاص استفاده شود مانند موردی که ما باید به Tinkerbell اختصاص دهیم (این فقط یک محیط اجرای موقت است که روی Docker پخش می شود) ما هنوز باید مراقبت کنیم:
- سازگاری ها: بسیاری از دستگاه های سخت افزاری ، درایورها ، ماژول های هسته ، معماری
- اندازه: سیستم عامل با RAM کار می کند ، بله امروزه آنقدرها گران نیست ، اما هنوز هم باید مراقب باشیم
- نیازها: ما نمی توانیم فرض کنیم همه محیط هایی که Tinkerbell اجرا می کند یکسان. به عنوان مثال کسی فکر می کند که یک سرور SSH را به عنوان بخشی از محیط حافظه اجرا کند زیرا سرور وی کنسول سریال ندارد و SSH گزینه خوبی برای عیب یابی است. یا آنها می خواهند نمایندگانی را برای کشف خدمات مانند کنسول ، یا برای نظارت مانند Telegraf برای بهبود مشاهده و نظارت اداره کنند. یا برخی از اسکنرها برای اهداف امنیتی.
ما نمی توانیم اسکنری درست کنیم که برای همه و همه کار کند. به همین دلیل با Hook تصمیم گرفتیم LinuxKit را به کار بگیریم.
LinuxKit اکنون بخشی از بنیاد Linux است که در ابتدا توسط Docker به طور خاص برای انتشار Docker برای Mac توسعه داده شد. می توانید به عنوان یک سازنده لینوکس که روی کانتینرها متمرکز است ، در مورد آن فکر کنید.
شما می توانید یک برنامه را به عنوان boot یا به عنوان سرویس های طولانی مدت در حالت بوت اضافه کنید. قسمت جالب این است که همه چیز به عنوان یک کانتینر به ما امکان می دهد تا بلوک های ساختمانی را به عنوان کانتینرهای Docker بسته بندی کنیم ، و مسیر مشخصی را از کاربر نهایی برای ایجاد محیط خود بر اساس نیازهای خود برای استفاده مجدد از LinuxKit (در صورت تمایل) و ساختمان ایجاد می کنیم.
یکی از عناصر سازنده ای که من به آن اشاره می کنم یک ظرف داکر است که منطق استفاده شده توسط LinuxKit برای راه اندازی docker daemon را نادیده می گیرد. همراه آن چیزی را که ما به آن tink-karker می گوییم نیز شروع می شود. نماینده ای که به سرور tink دسترسی پیدا می کند و گردش کار بعدی را برای دستیابی به دست می آورد. شما می توانید در مورد آنها به عنوان api-server و kubelet برای Kubernetes فکر کنید ، اما به جای اینکه غلاف ها را اجرا کنید ، tink-karker به فعالیت های docker Docker مانند:
- پخش یک سیستم عامل جدید به دیسک خاص
- قالب بندی یا پارتیشن بندی می رسد. یک دیسک
- اجرای دستورات با chroot متفاوت
- اما این می تواند هر ظرفی باشد ، شما حتی می توانید عملیاتی را اجرا کنید که وقتی جریان کار شما به یک نقطه مشخص می رسد ، شما را از حالت سستی مطلع می کند
LinuxKit امکاناتی برای چند معماری و فرمت خروجی نیز هست. به عنوان مثال ما در حال پشتیبانی از ARM هستیم.
بخشی از چیزی بزرگتر از خود
LinuxKit دارای یک انجمن پشتیبانی با اسناد ، مثال ها و حتی یک کانال Slack است. کاربران نهایی Tinkebell می توانند از صدها نفر از افراد و نگهدارنده هایی استفاده کنند که فقط به ایجاد سیستم های توزیع با LinuxKit اختصاص دارند. این امر باعث می شود تا تلاش برای حفظ Tinkerbell به اندازه معقول انجام شود. این اجازه را به ما می دهد که نسبت به آنچه بیشترین اهمیت را دارد ، سختگیرانه عمل کنیم. تهیه سریع فلز برهنه.