برنامه نویسی

کاوشگر سرزندگی، آمادگی و راه اندازی در Kubernetes: آنچه باید بدانید

Summarize this content to 400 words in Persian Lang
در کوبرنتیسکاوشگر برای بررسی سلامت و آمادگی ظروف در حال اجرا در یک غلاف استفاده می شود. Probes به Kubernetes اجازه می دهد تا با اطمینان از اینکه کانتینرها به درستی کار می کنند، چرخه حیات یک pod را مدیریت کند، و در غیر این صورت، اقدامات مناسب مانند راه اندازی مجدد کانتینر یا حذف آن از سرویس تا زمانی که آماده شود، انجام دهد.

سه نوع اصلی کاوشگر در Kubernetes وجود دارد:

1. کاوشگر Livenessهدف: تعیین می کند که آیا یک ظرف هنوز در حال کار و سالم است.اگر کاوشگر liveness از کار بیفتد، Kubernetes ظرف را مجددا راه اندازی می کند. این برای تشخیص موقعیت هایی که برنامه آویزان شده است یا در حالت پاسخگو نیست مفید است.سناریوی مثال: وب سروری که به ترافیک سرویس می دهد اما به دلیل بن بست یا فرسودگی منابع قادر به پردازش درخواست های جدید نیست.2. کاوشگر آمادگیهدف: تعیین می کند که آیا کانتینر برای پذیرش ترافیک آماده است یا خیر.اگر کاوشگر آمادگی از کار بیفتد، کانتینر ترافیکی از سرویس Kubernetes دریافت نخواهد کرد (تا زمانی که آماده شود از لیست نقطه پایانی سرویس حذف خواهد شد).این زمانی مفید است که یک کانتینر قبل از شروع به ارائه درخواست‌ها (مثلاً بارگیری مجموعه داده‌های بزرگ، انجام انتقال) به زمان اولیه یا گرم شدن نیاز دارد.3. Startup Probeهدف: تعیین می کند که آیا یک ظرف با موفقیت راه اندازی شده است یا خیر.اگر کاوشگر راه اندازی خراب شود، Kubernetes ظرف را می کشد و سعی می کند آن را دوباره راه اندازی کند. این برای کانتینرهایی که نیاز به زمان اضافی برای مقداردهی اولیه دارند یا شروع به کندی دارند مفید است.این کاوشگر معمولاً برای برنامه‌هایی استفاده می‌شود که برای راه‌اندازی به زمان بیشتری از حد معمول قبل از انجام بررسی‌های آمادگی یا زنده بودن نیاز دارند.

هر یک از این پروب ها بسیار قابل تنظیم هستند و با استفاده از سه گزینه اصلی قابل تعریف هستند:

1. HTTP GET Probe2. TCP Socket Probe3. Exec Probe

بیایید به هر یک از این گزینه ها و نحوه پیکربندی آنها بپردازیم.

1. HTTP GET ProbeHTTP GET Probe یک درخواست HTTP GET را به یک مسیر خاص در پورت یک کانتینر ارسال می کند تا بررسی کند که آیا کانتینر سالم است. این رایج ترین نوع کاوشگر برای برنامه ها یا سرویس های مبتنی بر وب است.

چگونه کار می کند:

Kubernetes یک درخواست HTTP به مسیر و پورت مشخص شده در داخل کانتینر ارسال می کند.
اگر سرور با کد وضعیت HTTP 2xx یا 3xx پاسخ دهد، کاوش موفق در نظر گرفته می شود.
اگر سرور با کد وضعیت ناموفق پاسخ دهد (به عنوان مثال، 4xx، 5xx)، کاوشگر ناموفق در نظر گرفته می شود.

مثال:

livenessProbe:
httpGet:
path: /healthz
port: 8080
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 2
failureThreshold: 3

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

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

مسیر: مسیر URL که کاوشگر سعی خواهد کرد به آن دسترسی پیدا کند (به عنوان مثال، /healthz).

بندر: پورت دسترسی به داخل کانتینر (مثلاً 8080).

initialDelaySeconds: زمان انتظار اولیه قبل از انجام اولین پروب، بر حسب ثانیه.

دوره ثانیه: فاصله بین هر پروب، بر حسب ثانیه.

تایم اوت ثانیه: مدت زمان انتظار برای پاسخ قبل از اتمام زمان، در چند ثانیه.

آستانه شکست: تعداد خرابی های متوالی قبل از علامت گذاری ظرف به عنوان ناسالم.

زمان استفاده:

مناسب برای سرورهای وب، APIها یا هر کانتینری که یک سرویس مبتنی بر HTTP را اجرا می کند.
ایده آل برای ظروف که نقاط پایانی سلامت یا آمادگی را نشان می دهند.

2. TCP Socket ProbeTCP Socket Probe بررسی می کند که آیا سوکت TCP در یک پورت معین در کانتینر باز است یا خیر. این به ویژه برای سرویس های غیر مبتنی بر HTTP مانند پایگاه های داده، کارگزاران پیام، یا خدمات شبکه سفارشی مفید است.

چگونه کار می کند:

Kubernetes تلاش می کند تا یک اتصال TCP را به پورت مشخص شده در داخل کانتینر باز کند.
اگر اتصال موفقیت آمیز باشد (یعنی پورت باز باشد)، پروب عبور می کند.
اگر اتصال برقرار نشود (یعنی پورت بسته باشد)، پروب از کار می افتد.

مثال:

readinessProbe:
tcpSocket:
port: 3306
initialDelaySeconds: 5
periodSeconds: 10
timeoutSeconds: 3
failureThreshold: 3

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

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

بندر: پورت TCP که Kubernetes باید سعی کند به آن متصل شود (مثلاً 3306 برای MySQL).

initialDelaySeconds: تعداد ثانیه های انتظار پس از شروع کانتینر قبل از اجرای اولین پروب.

دوره ثانیه: هر چند وقت یکبار سوکت را در چند ثانیه چک کنید.

تایم اوت ثانیه: مدت زمان انتظار برای پاسخ قبل از اتمام زمان، در چند ثانیه.

آستانه شکست: تعداد پروب های شکست خورده قبل از ظرف ناسالم علامت گذاری شده است.

زمان استفاده:

مناسب برای سرویس‌هایی که از HTTP استفاده نمی‌کنند، مانند پایگاه‌های داده (MySQL، PostgreSQL) یا صف‌های پیام (Kafka، Redis).
برای کانتینرهایی که خدمات شبکه خام را بدون نقطه پایانی HTTP در معرض نمایش می‌گذارند مفید است.

3. Exec ProbeExec Probe دستوری را در داخل کانتینر اجرا می کند و وضعیت خروج آن را بررسی می کند تا تعیین کند که آیا پروب موفق است یا خیر. اگر فرمان وضعیت خروج 0 را برگرداند، کاوشگر عبور می کند. اگر وضعیت خروج غیر صفر را برگرداند، پروب از کار می افتد.

چگونه کار می کند:Kubernetes دستور مشخص شده را در داخل کانتینر اجرا می کند.اگر کد خروجی دستور 0 باشد، کاوشگر موفقیت آمیز است.اگر کد خروج غیر صفر باشد، پروب از کار می افتد.

مثال:

startupProbe:
exec:
command:
– “cat”
– “/tmp/healthy”
initialDelaySeconds: 10
periodSeconds: 15
failureThreshold: 3

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

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

فرمان: دستور اجرا در داخل کانتینر که به عنوان لیستی از رشته ها مشخص شده است (به عنوان مثال، cat /tmp/healthy).

initialDelaySeconds: تعداد ثانیه های انتظار پس از شروع کانتینر قبل از اجرای اولین پروب.

دوره ثانیه: هر چند وقت یکبار دستور را در چند ثانیه اجرا کنید.

آستانه شکست: تعداد خرابی های متوالی قبل از علامت گذاری ظرف به عنوان ناسالم.

زمان استفاده:

مناسب برای مواردی که باید حالت های داخلی یا فایل های موجود در ظرف را بررسی کنید.
برای اشکال‌زدایی یا بررسی‌های پیچیده سلامتی که نیاز به اجرای اسکریپت‌ها یا دستورات خاصی در داخل کانتینر دارند، مفید است.

گزینه های پیکربندی پروب اضافی

علاوه بر تعریف نوع پروب (httpGet، tcpSocket، یا exec)، می‌توانید چندین پارامتر مرتبط با زمان‌بندی را نیز برای تنظیم دقیق نحوه عملکرد Kubernetes پیکربندی کنید:

initialDelaySeconds: زمان انتظار بعد از شروع کانتینر قبل از اجرای اولین پروب. این زمانی مفید است که برنامه شما برای مقداردهی اولیه به زمان نیاز دارد.
periodSeconds: فرکانسی که Kubernetes در آن کاوشگر را انجام می دهد. این کنترل می کند که سیستم چند بار سلامت یا آمادگی کانتینر را بررسی می کند.
timeoutSeconds: مدت زمانی است که Kubernetes باید منتظر باشد تا یک کاوشگر قبل از اینکه آن را شکست خورده بداند، پاسخ دهد.
شکست آستانه: تعداد خرابی های پی در پی پروبی که کوبرنتس قبل از اینکه ظرف را ناسالم بداند تحمل می کند.
موفقیت آستانه: تعداد کاوشگرهای موفق متوالی مورد نیاز برای سالم در نظر گرفتن ظرف. (پیش‌فرض برای کاوشگرهای زنده و آمادگی 1 است و معمولاً برای بررسی آمادگی استفاده می‌شود.)

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

سه نوع اصلی کاوشگر در Kubernetes وجود دارد:

1. کاوشگر Liveness
هدف: تعیین می کند که آیا یک ظرف هنوز در حال کار و سالم است.
اگر کاوشگر liveness از کار بیفتد، Kubernetes ظرف را مجددا راه اندازی می کند. این برای تشخیص موقعیت هایی که برنامه آویزان شده است یا در حالت پاسخگو نیست مفید است.
سناریوی مثال: وب سروری که به ترافیک سرویس می دهد اما به دلیل بن بست یا فرسودگی منابع قادر به پردازش درخواست های جدید نیست.
2. کاوشگر آمادگی
هدف: تعیین می کند که آیا کانتینر برای پذیرش ترافیک آماده است یا خیر.
اگر کاوشگر آمادگی از کار بیفتد، کانتینر ترافیکی از سرویس Kubernetes دریافت نخواهد کرد (تا زمانی که آماده شود از لیست نقطه پایانی سرویس حذف خواهد شد).
این زمانی مفید است که یک کانتینر قبل از شروع به ارائه درخواست‌ها (مثلاً بارگیری مجموعه داده‌های بزرگ، انجام انتقال) به زمان اولیه یا گرم شدن نیاز دارد.
3. Startup Probe
هدف: تعیین می کند که آیا یک ظرف با موفقیت راه اندازی شده است یا خیر.
اگر کاوشگر راه اندازی خراب شود، Kubernetes ظرف را می کشد و سعی می کند آن را دوباره راه اندازی کند. این برای کانتینرهایی که نیاز به زمان اضافی برای مقداردهی اولیه دارند یا شروع به کندی دارند مفید است.
این کاوشگر معمولاً برای برنامه‌هایی استفاده می‌شود که برای راه‌اندازی به زمان بیشتری از حد معمول قبل از انجام بررسی‌های آمادگی یا زنده بودن نیاز دارند.

هر یک از این پروب ها بسیار قابل تنظیم هستند و با استفاده از سه گزینه اصلی قابل تعریف هستند:

1. HTTP GET Probe
2. TCP Socket Probe
3. Exec Probe

بیایید به هر یک از این گزینه ها و نحوه پیکربندی آنها بپردازیم.

1. HTTP GET Probe
HTTP GET Probe یک درخواست HTTP GET را به یک مسیر خاص در پورت یک کانتینر ارسال می کند تا بررسی کند که آیا کانتینر سالم است. این رایج ترین نوع کاوشگر برای برنامه ها یا سرویس های مبتنی بر وب است.

چگونه کار می کند:

  • Kubernetes یک درخواست HTTP به مسیر و پورت مشخص شده در داخل کانتینر ارسال می کند.
  • اگر سرور با کد وضعیت HTTP 2xx یا 3xx پاسخ دهد، کاوش موفق در نظر گرفته می شود.
  • اگر سرور با کد وضعیت ناموفق پاسخ دهد (به عنوان مثال، 4xx، 5xx)، کاوشگر ناموفق در نظر گرفته می شود.

مثال:

livenessProbe:
  httpGet:
    path: /healthz
    port: 8080
  initialDelaySeconds: 5
  periodSeconds: 10
  timeoutSeconds: 2
  failureThreshold: 3

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

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

  • مسیر: مسیر URL که کاوشگر سعی خواهد کرد به آن دسترسی پیدا کند (به عنوان مثال، /healthz).
  • بندر: پورت دسترسی به داخل کانتینر (مثلاً 8080).
  • initialDelaySeconds: زمان انتظار اولیه قبل از انجام اولین پروب، بر حسب ثانیه.
  • دوره ثانیه: فاصله بین هر پروب، بر حسب ثانیه.
  • تایم اوت ثانیه: مدت زمان انتظار برای پاسخ قبل از اتمام زمان، در چند ثانیه.
  • آستانه شکست: تعداد خرابی های متوالی قبل از علامت گذاری ظرف به عنوان ناسالم.

زمان استفاده:

  • مناسب برای سرورهای وب، APIها یا هر کانتینری که یک سرویس مبتنی بر HTTP را اجرا می کند.
  • ایده آل برای ظروف که نقاط پایانی سلامت یا آمادگی را نشان می دهند.

2. TCP Socket Probe
TCP Socket Probe بررسی می کند که آیا سوکت TCP در یک پورت معین در کانتینر باز است یا خیر. این به ویژه برای سرویس های غیر مبتنی بر HTTP مانند پایگاه های داده، کارگزاران پیام، یا خدمات شبکه سفارشی مفید است.

چگونه کار می کند:

  • Kubernetes تلاش می کند تا یک اتصال TCP را به پورت مشخص شده در داخل کانتینر باز کند.
  • اگر اتصال موفقیت آمیز باشد (یعنی پورت باز باشد)، پروب عبور می کند.
  • اگر اتصال برقرار نشود (یعنی پورت بسته باشد)، پروب از کار می افتد.

مثال:

readinessProbe:
  tcpSocket:
    port: 3306
  initialDelaySeconds: 5
  periodSeconds: 10
  timeoutSeconds: 3
  failureThreshold: 3
وارد حالت تمام صفحه شوید

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

  • بندر: پورت TCP که Kubernetes باید سعی کند به آن متصل شود (مثلاً 3306 برای MySQL).
  • initialDelaySeconds: تعداد ثانیه های انتظار پس از شروع کانتینر قبل از اجرای اولین پروب.
  • دوره ثانیه: هر چند وقت یکبار سوکت را در چند ثانیه چک کنید.
  • تایم اوت ثانیه: مدت زمان انتظار برای پاسخ قبل از اتمام زمان، در چند ثانیه.
  • آستانه شکست: تعداد پروب های شکست خورده قبل از ظرف ناسالم علامت گذاری شده است.

زمان استفاده:

  • مناسب برای سرویس‌هایی که از HTTP استفاده نمی‌کنند، مانند پایگاه‌های داده (MySQL، PostgreSQL) یا صف‌های پیام (Kafka، Redis).
  • برای کانتینرهایی که خدمات شبکه خام را بدون نقطه پایانی HTTP در معرض نمایش می‌گذارند مفید است.

3. Exec Probe
Exec Probe دستوری را در داخل کانتینر اجرا می کند و وضعیت خروج آن را بررسی می کند تا تعیین کند که آیا پروب موفق است یا خیر. اگر فرمان وضعیت خروج 0 را برگرداند، کاوشگر عبور می کند. اگر وضعیت خروج غیر صفر را برگرداند، پروب از کار می افتد.

چگونه کار می کند:
Kubernetes دستور مشخص شده را در داخل کانتینر اجرا می کند.
اگر کد خروجی دستور 0 باشد، کاوشگر موفقیت آمیز است.
اگر کد خروج غیر صفر باشد، پروب از کار می افتد.

مثال:

startupProbe:
  exec:
    command:
      - "cat"
      - "/tmp/healthy"
  initialDelaySeconds: 10
  periodSeconds: 15
  failureThreshold: 3

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

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

  • فرمان: دستور اجرا در داخل کانتینر که به عنوان لیستی از رشته ها مشخص شده است (به عنوان مثال، cat /tmp/healthy).
  • initialDelaySeconds: تعداد ثانیه های انتظار پس از شروع کانتینر قبل از اجرای اولین پروب.
  • دوره ثانیه: هر چند وقت یکبار دستور را در چند ثانیه اجرا کنید.
  • آستانه شکست: تعداد خرابی های متوالی قبل از علامت گذاری ظرف به عنوان ناسالم.

زمان استفاده:

  • مناسب برای مواردی که باید حالت های داخلی یا فایل های موجود در ظرف را بررسی کنید.
  • برای اشکال‌زدایی یا بررسی‌های پیچیده سلامتی که نیاز به اجرای اسکریپت‌ها یا دستورات خاصی در داخل کانتینر دارند، مفید است.

گزینه های پیکربندی پروب اضافی

علاوه بر تعریف نوع پروب (httpGet، tcpSocket، یا exec)، می‌توانید چندین پارامتر مرتبط با زمان‌بندی را نیز برای تنظیم دقیق نحوه عملکرد Kubernetes پیکربندی کنید:

  • initialDelaySeconds: زمان انتظار بعد از شروع کانتینر قبل از اجرای اولین پروب. این زمانی مفید است که برنامه شما برای مقداردهی اولیه به زمان نیاز دارد.
  • periodSeconds: فرکانسی که Kubernetes در آن کاوشگر را انجام می دهد. این کنترل می کند که سیستم چند بار سلامت یا آمادگی کانتینر را بررسی می کند.
  • timeoutSeconds: مدت زمانی است که Kubernetes باید منتظر باشد تا یک کاوشگر قبل از اینکه آن را شکست خورده بداند، پاسخ دهد.
  • شکست آستانه: تعداد خرابی های پی در پی پروبی که کوبرنتس قبل از اینکه ظرف را ناسالم بداند تحمل می کند.
  • موفقیت آستانه: تعداد کاوشگرهای موفق متوالی مورد نیاز برای سالم در نظر گرفتن ظرف. (پیش‌فرض برای کاوشگرهای زنده و آمادگی 1 است و معمولاً برای بررسی آمادگی استفاده می‌شود.)

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

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

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

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