عیب‌ یابی کانفیگ‌ های Kubernetes: خطاهای Pod و Service را برطرف کنید

۲۵ تیر ۱۴۰۴ مطالعه ۴ دقیقه

کوبرنتیس (Kubernetes) به استاندارد طلایی برای ارکستراسیون کانتینر ها تبدیل شده است، اما این قدرت و انعطاف ‌پذیری با پیچیدگی همراه است. برای هر توسعه دهنده یا مهندس DevOps، مواجهه با خطا های konfigurasi (کانفیگ) یک امر روزمره است. در این میان، دو مورد از رایج ‌ترین و حیاتی ‌ترین منابع خطا، Pod ها و Service ها هستند. یک Pod که در وضعیت Pending گیر کرده یا یک Service که ترافیک را به درستی هدایت نمی ‌کند، می ‌تواند کل یک اپلیکیشن را از کار بیندازد. خوشبختانه، کوبرنتیس ابزار های قدرتمندی برای عیب ‌یابی در اختیار ما می ‌گذارد. کلید حل مشکل، داشتن یک رویکرد سیستماتیک است.

این راهنما یک چک لیست عملی برای شناسایی و رفع رایج ‌ترین خطا های Pod و Service ارائه می ‌دهد.

جعبه ابزار اصلی شما: دستورات kubectl

پیش از هر چیز، باید با چهار دستور اساسی kubectl که بهترین دوستان شما در این مسیر هستند، آشنا شوید:

  • kubectl get pods: وضعیت کلی همه Pod ها را به سرعت نمایش می ‌دهد.
  • kubectl describe pod <pod-name>: اطلاعات بسیار دقیقی شامل رویداد ها (Events)، وضعیت کانتینر ها و دلیل خطا ها را ارائه می ‌دهد. این دستور معمولاً اولین قدم برای عیب ‌یابی عمیق است.
  • kubectl logs <pod-name>: لاگ ‌های استاندارد اپلیکیشن در حال اجرا در کانتینر را نمایش می ‌دهد.
  • kubectl exec -it <pod-name> -- /bin/sh: به شما اجازه می ‌دهد تا یک شل (shell) در داخل کانتینر در حال اجرا داشته باشید و محیط را از نزدیک بررسی کنید.

بخش اول: عیب ‌یابی خطا های رایج Pod

۱. وضعیت: Pending (در حال انتظار) یک Pod در این وضعیت گیر کرده و اجرا نمی ‌شود.

  • دلیل احتمالی: شایع ‌ترین دلایل، کمبود منابع (CPU یا حافظه) در کلاستر یا عدم توانایی زمان ‌بند (Scheduler) برای پیدا کردن یک Node مناسب است.
  • راه حل: دستور kubectl describe pod <pod-name> را اجرا کنید. در بخش Events به دنبال پیام‌ هایی مانند FailedScheduling بگردید. این پیام دقیقاً به شما می ‌گوید که چرا Pod زمان ‌بندی نشده است (مثلاً 0/3 nodes are available: 3 Insufficient cpu). یا درخواست منابع (requests) را در مانیفست Pod خود کاهش دهید یا منابع Node های کلاستر را افزایش دهید.

۲. وضعیت: ImagePullBackOff یا ErrImagePull کوبرنتیس نمی ‌تواند ایمیج کانتینر شما را از رجیستری (مانند Docker Hub) دانلود کند.

  • دلیل احتمالی: اشتباه تایپی در نام یا تگ ایمیج، نیاز به احراز هویت برای دسترسی به یک رجیستری خصوصی.
  • راه حل: ابتدا نام و تگ ایمیج را در فایل YAML خود به دقت بررسی کنید. اگر از رجیستری خصوصی استفاده می ‌کنید، اطمینان حاصل کنید که imagePullSecrets به درستی در مانیفست شما تعریف شده و Secret مورد نظر حاوی اطلاعات صحیح لاگین است.

۳. وضعیت: CrashLoopBackOff این یکی از رایج ‌ترین خطا هاست. به این معنی که کانتینر شما اجرا می ‌شود، اما بلافاصله پس از اجرا به دلیل یک خطا، کرش کرده و متوقف می ‌شود. کوبرنتیس به طور مداوم تلاش می ‌کند آن را دوباره اجرا کند و این چرخه تکرار می ‌شود.

  • دلیل احتمالی: این مشکل تقریباً همیشه یک خطای درون اپلیکیشن شماست، نه یک مشکل کوبرنتیس. ممکن است اپلیکیشن شما نتواند به دیتابیس متصل شود، یک فایل کانفیگ ضروری را پیدا نکند، یا با یک خطای برنامه نویسی مواجه شده باشد.
  • راه حل: فوراً دستور kubectl logs <pod-name> را اجرا کنید. لاگ‌ های اپلیکیشن به شما سرنخ اصلی را خواهند داد. اگر لاگ ‌ها کافی نبودند، از دستور kubectl logs <pod-name> --previous برای دیدن لاگ ‌های آخرین اجرای ناموفق استفاده کنید. همچنین، تنظیمات Liveness Probe و Readiness Probe را در مانیفست خود بررسی کنید؛ ممکن است این Probe ها به اشتباه و خیلی زود وضعیت Pod را ناسالم تشخیص می ‌دهند.

بخش دوم: عیب ‌یابی خطا های رایج Service

عیب ‌یابی خطا های رایج Service

Service ها مسئولیت ایجاد یک نقطه دسترسی پایدار برای مجموعه ‌ای از Pod ها را بر عهده دارند. خطا در آن‌ ها معمولاً به معنای عدم اتصال است.

۱. مشکل: Service به Pod ها متصل نمی ‌شود (Endpoints وجود ندارد) شما یک Service ساخته‌ اید، اما هیچ ترافیکی به Pod های هدف نمی ‌رسد.

  • دلیل احتمالی: عدم تطابق میان selector در Service و labels در Pod ها. این شایع ‌ترین اشتباه در کانفیگ Service است.
  • راه حل: kubectl describe svc <service-name> را اجرا کرده و به فیلد Selector دقت کنید. سپس kubectl describe pod <pod-name> را اجرا کرده و فیلد Labels را ببینید. این دو باید دقیقاً با هم مطابقت داشته باشند. برای تأیید، می ‌توانید kubectl get endpoints <service-name> را اجرا کنید. اگر ستون ENDPOINTS خالی بود، یعنی هیچ Pod ای با این Selector پیدا نشده است.

۲. مشکل: اتصال برقرار می ‌شود اما رد (Refused) می ‌شود ترافیک به Pod می ‌رسد، اما اتصال برقرار نمی ‌شود.

  • دلیل احتمالی: عدم تطابق پورت ‌ها.
  • راه حل: اطمینان حاصل کنید که فیلد targetPort در مانیفست Service شما، دقیقاً همان پورتی است که اپلیکیشن شما در داخل کانتینر روی آن در حال گوش دادن است (معمولاً در containerPort تعریف می ‌شود). یک اشتباه رایج، قرار دادن پورت خود Service (فیلد port) به جای targetPort است.

نتیجه گیری

عیب ‌یابی در کوبرنتیس یک مهارت اکتسابی است که با تمرین بهبود می ‌یابد. با پیروی از یک رویکرد منظم (ابتدا get، سپس describe برای دیدن رویداد ها، و در نهایت logs برای بررسی اپلیکیشن)، می ‌توانید به سرعت ریشه اکثر مشکلات را که معمولاً اشتباهات تایپی ساده یا عدم تطابق در کانفیگ ‌ها هستند، پیدا کنید.

شرکت صفر و یک

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


داغ‌ترین مطالب روز

بهترین DNSهای گیمینگ 🎮

بهترین DNSهای گیمینگ 🎮

DNS یکی از مهم ترین مواردی است که سبب می شود تا تجربه شما از بازی کردن بهبود یافته و اتصال شما به سرورها پایداری و ثبات پیدا کند. اما پیدا کردن دی ان اس خوب برای بازی ها آنلاین به خصوص بازی هایی نظیر Valorant، Call of Duty و … همواره چالش محسوب شده […]

۱۶ خرداد ۱۴۰۱ ۹

رفع مشکل وصل نشدن اینترنت در ویندوز 7🌐

رفع مشکل وصل نشدن اینترنت در ویندوز 7🌐

اینترنت یکی از مهم ترین عناصر زندگی در عصر امروز است. اما اگر نتوانیم با ویندوز به اینترنت وصل شویم چه؟ مشکل وصل نشدن اینترنت در ویندوز 7 چیست؟ در این مقاله به آموزش رفع مشکل وصل نشدن اینترنت در ویندوز 7 می پردازیم تا با بررسی راه حل های آن بتوانید به صورت اصولی […]

۲۸ اردیبهشت ۱۴۰۱ ۸

دلایل وصل نشدن اینترنت لپ تاپ 💻🌐

دلایل وصل نشدن اینترنت لپ تاپ 💻🌐

وقتی لپ تاپ شما به WiFi متصل نمی شود، روش هایی را که می توانید برای دسترسی به اینترنت استفاده کنید محدود می کند. اگرچه این یک راه بسیار راحت برای آنلاین شدن است، اما چندین مورد وجود دارد که هنگام استفاده از WiFi ممکن است اشتباه کند.این مشکلات باعث می شود که اتصال شما […]

۱۸ تیر ۱۴۰۱ ۶

سرور ابری

سرور ابری

سرور ابری و یا سرویس ابری از اصطلاحاتی هستند که امروزه به آن زیاد بر می خوریم. اما شاید تا کنون درک درستی در خصوص خدمات مبتنی بر ابر و سرور ابری (سرور رایانش ابری) نداشته باشیم. انتخاب خدمات مرکز داده مناسب ، می تواند تاثیر به سزایی در هزینه های یک کسب و کار […]

۲ تیر ۱۳۹۹ ۵

آموزش دانلود از اینترنت📥

آموزش دانلود از اینترنت📥

دانلود کردن بخش جدایی ناپذیر این روزهای زندگی شده است. هر روز حجم عظیمی از اطلاعات دانلود و آپلود شده و به زندگی مجازی جان می بخشد. اما نحوه دانلود اصولی و حرفه ای از اینترنت به چه صورت است؟ چطور دانلود کنیم که از سالم بودن فایل اطمینان بالایی داشته باشیم؟ در این مقاله […]

۱۱ بهمن ۱۴۰۰ ۴

دیدگاه‌ها

comment symbol

برای این مقاله ۰ دیدگاه نوشته شده است. دیدگاه شما چیست؟

شما نیز، دیدگاه خود را از طریق دکمه زیر به اشتراک بگذارید.

نوشتن دیدگاه

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

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