برنامه نویسی

Sidecar vs Init Containers: کدام یک را باید استفاده کنید؟

ظروف جانبی و کانتینرهای اولیه هر دو در Kubernetes برای گسترش عملکرد غلاف استفاده می شوند. با این حال، آنها اهداف متفاوتی دارند و باید در شرایط مختلف استفاده شوند.

ظروف سایدکار در کنار ظرف اصلی در یک غلاف اجرا می شوند. آنها شبکه و منابع ذخیره سازی یکسانی را به اشتراک می گذارند و می توانند با استفاده از لوکال هاست با یکدیگر ارتباط برقرار کنند. کانتینرهای جانبی معمولاً برای ارائه خدمات کمکی به کانتینر اصلی مانند ورود به سیستم، نظارت یا تعادل بار استفاده می شوند.

ظروف Init قبل از ظرف اصلی در یک غلاف اجرا می شوند. از آنها برای انجام کارهایی استفاده می شود که باید قبل از شروع کانتینر اصلی تکمیل شوند، مانند دانلود وابستگی ها یا تنظیم متغیرهای محیطی. کانتینرهای Init از شبکه و منابع ذخیره سازی مشابه با کانتینر اصلی استفاده نمی کنند و نمی توانند با استفاده از لوکال هاست با یکدیگر ارتباط برقرار کنند.

زمان استفاده از ظروف کناری

زمانی که نیاز به ارائه خدمات کمکی به کانتینر اصلی دارید باید از کانتینرهای سایدکار استفاده کنید. به عنوان مثال، می توانید از یک کانتینر کناری برای ارائه گزارش، نظارت یا تعادل بار برای برنامه خود استفاده کنید. ظروف سایدکار نیز در مواقعی که نیاز دارید ظرف اصلی را از بقیه غلاف جدا کنید، انتخاب خوبی هستند.

زمان استفاده از ظروف اولیه

زمانی که نیاز به انجام کارهایی دارید که باید قبل از شروع کانتینر اصلی تکمیل شوند، باید از کانتینرهای اولیه استفاده کنید. به عنوان مثال، می توانید از یک کانتینر init برای دانلود وابستگی ها یا تنظیم متغیرهای محیطی برای برنامه خود استفاده کنید. کانتینرهای Init نیز انتخاب خوبی برای زمانی هستند که باید مطمئن شوید که کانتینر اصلی با موفقیت راه اندازی می شود.

کدامیک بهتر است؟

بهترین انتخاب برای شما به نیازهای خاص شما بستگی دارد. اگر نیاز به ارائه خدمات کمکی به کانتینر اصلی دارید، باید از کانتینرهای سایدکار استفاده کنید. اگر باید کارهایی را انجام دهید که باید قبل از شروع کانتینر اصلی تکمیل شوند، باید از کانتینرهای init استفاده کنید.

در اینجا جدولی وجود دارد که تفاوت های کلیدی بین کانتینرهای سایدکار و کانتینرهای اولیه را خلاصه می کند:

تصویر 1

در اینجا یک نمونه فایل YAML آورده شده است که نحوه استفاده از کانتینرهای سایدکار و کانتینرهای اولیه را نشان می دهد:

apiVersion: v1
kind: Pod
metadata:
  name: my-pod
spec:
  containers:
  - name: main
    image: nginx
  - name: sidecar
    image: busybox
    command: ["sleep", "3600"]
  initContainers:
  - name: init
    image: busybox
    command: ["echo", "Hello from init container"]
وارد حالت تمام صفحه شوید

از حالت تمام صفحه خارج شوید

این فایل YAML یک غلاف را با دو کانتینر تعریف می کند: یک ظرف اصلی و یک ظرف کناری. کانتینر اصلی وظیفه اجرای وب سرور nginx را بر عهده دارد. کانتینر سایدکار وظیفه خوابیدن 3600 ثانیه را دارد. کانتینر init وظیفه چاپ پیام Hello from init container را بر روی کنسول دارد.

کانتینر اصلی و کانتینر سایدکار شبکه و منابع ذخیره‌سازی یکسانی دارند. با این حال، کانتینر init از شبکه و منابع ذخیره سازی مشابه با کانتینر اصلی استفاده نمی کند.

ظرف init قبل از کانتینر اصلی اجرا می شود. این بدان معنی است که ابتدا کانتینر init شروع می شود و قبل از شروع کانتینر اصلی پیام “Hello from init container” را در کنسول چاپ می کند.

امیدوارم این پست وبلاگ به شما کمک کند تا تفاوت بین ظروف جانبی و کانتینرهای اولیه را درک کنید. اگر سوالی دارید، لطفاً از من بپرسید.

نوشته های مشابه

دیدگاهتان را بنویسید

نشانی ایمیل شما منتشر نخواهد شد. بخش‌های موردنیاز علامت‌گذاری شده‌اند *

دکمه بازگشت به بالا