اطلس نیکو

ترافیک لود بالانسر به برنامه ها در خوشه Kubernetes

دسته بندی ها : مقالات شبکه 20 نوامبر 2022 siteadmin 610 بازدید
ترافیک لود بالانسر به برنامه ها در خوشه Kubernetes

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

برای تیم‌های DevOps، K8s یک پلتفرم مشترک برای استقرار برنامه‌های خود در محیط‌های ابری مختلف فراهم می‌کند، پیچیدگی‌های زیرساخت ابری زیرین را انتزاع می‌کند و به آن‌ها اجازه می‌دهد تا روی وظایف خود تمرکز کنند. برای سازمان‌ها، این به انعطاف‌پذیری برای استقرار برنامه‌های کاربردی در فضای ابری تبدیل می‌شود که به بهترین شکل نیازهای مشتریان را برآورده می‌کنند و در عین حال هزینه‌ها را بهینه می‌کنند.

با این حال، این انعطاف‌پذیری برای استقرار برنامه‌ها در هر ابری، چالشی را ایجاد می‌کند که آنها را برای کاربران نهایی به شیوه‌ای قابل اعتماد و سازگار در دسترس قرار دهد. به عنوان مثال، هنگامی که یک برنامه از یک ابر خصوصی به عمومی (مانند AWS یا Azure) منتقل می‌شود، چگونه می‌توانید از همان سطح دسترسی، عملکرد، قابلیت اطمینان و امنیت مانند ابر خصوصی اطمینان حاصل کنید؟

image 3 - ترافیک لود بالانسر به برنامه ها در خوشه Kubernetes

برای دسترسی به برنامه‌ها برای کاربران نهایی، Kubernetes از گزینه‌های زیر پشتیبانی می‌کند:

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

LoadBalancer: مانند NodePort، این گزینه یک پورت را به هر گره اختصاص می دهد و علاوه بر آن به یک load balancer خارجی متصل می شود. این گزینه نیاز به ادغام با زیرساخت ارائه‌دهنده ابر اساسی دارد و از این رو، معمولاً با ارائه‌دهندگان ابر عمومی که دارای چنین ادغامی هستند استفاده می‌شود. با این حال، این یکپارچگی فشرده، انتقال یک برنامه از یک ارائه دهنده ابری به دیگری را دشوار و مستعد خطا می کند.

Ingress Controller: K8s یک کنترلر ورودی را تعریف می کند که می تواند برای هدایت ترافیک HTTP و HTTPS به برنامه های در حال اجرا در داخل خوشه استفاده شود. با این حال، یک کنترل کننده ورودی، نیاز یک متعادل کننده بار خارجی را برطرف نمی کند. همانطور که در مورد متعادل کننده بار، هر ارائه دهنده ابر عمومی دارای کنترل کننده ورودی خود است که در ارتباط با متعادل کننده بار خود کار می کند. به عنوان مثال، Azure’s AKS Application Gateway Ingress Controller یک کنترلر ورودی است که در ارتباط با Azure Application Gateway کار می کند. این دوباره راه حل دسترسی را برای استقرار ابری خاص می کند.

واضح است که هیچ یک از گزینه‌های بالا راه‌حلی واقعاً ابراگنوستیک ارائه نمی‌دهند. همچنین، در حالی که استفاده از تعادل بار سفارشی ارائه‌دهنده ابر یا راه‌حل Ingress Controller ممکن است در کوتاه‌مدت سریع و آسان باشد، به طور کلی، پیچیدگی مدیریت را افزایش می‌دهد و از اتوماسیون جلوگیری می‌کند، زیرا اکنون باید با چندین راه‌حل مختلف سر و کار داشته باشید.

یک راه حل مورد نظر دارای ویژگی های کلیدی زیر است:

Cloud-agnostic: راه حل باید در ابرهای عمومی و خصوصی کار کند. این بدان معناست که باید در فاکتورهای شکلی مختلف (مانند مجازی، فیزیکی و کانتینری) در دسترس باشد تا بتوان آن را به شکلی بهینه برای آن محیط مستقر کرد.

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

پشتیبانی از ابزارهای اتوماسیون: راه حل باید از ابزارهای اتوماسیون برای ادغام در فرآیندهای DevOps موجود مانند خطوط لوله CI/CD پشتیبانی کند.

دید متمرکز و تجزیه و تحلیل: راه حل باید دید و تجزیه و تحلیل متمرکز را ارائه دهد. این امر عیب‌یابی فعال، تجزیه و تحلیل سریع ریشه‌ای را امکان‌پذیر می‌سازد، که منجر به آپتایم بالاتر برنامه می‌شود.

چگونه A10 می تواند کمک کند

A10 چنین راه حلی را با استفاده از Thunder® ADC خود همراه با Thunder Kubernetes Connector (TKC) ارائه می دهد:

Thunder ADC: Thunder ADC به شکل‌های مختلفی از جمله مجازی، فیزیکی و کانتینری عرضه می‌شود، به این معنی که راه‌حل را می‌توان در محیط‌های چند ابری و ترکیبی-ابر مستقر کرد. این در خارج از خوشه Kubernetes قرار دارد و بار ترافیکی را که به برنامه‌های در حال اجرا در داخل خوشه ارسال می‌شود، متعادل می‌کند. برای این کار، Thunder ADC باید پیکربندی شود، و این کار توسط TKC انجام می شود.

TKC: TKC در داخل خوشه Kubernetes به عنوان یک کانتینر اجرا می شود و به طور خودکار Thunder ADC را با ایجاد و کوچک شدن Pods پیکربندی می کند.

TKC یک فایل Ingress Resource را به عنوان ورودی می گیرد. این فایل حاوی پارامترهای SLB است که باید روی Thunder ADC پیکربندی شوند، مانند IP مجازی (VIP)، پروتکل (به عنوان مثال، http) و شماره پورت (به عنوان مثال، ۸۰)، که Thunder ADC به درخواست های کاربر گوش می دهد، و نام گروه خدماتی که حاوی لیست گره هایی است که Thunder ADC ترافیک را به آنها ارسال می کند.

فایل Ingress Resource همچنین سرویسی را در خوشه Kubernetes مشخص می کند که پیکربندی SLB برای آن در Thunder ADC انجام می شود. TKC سرور K8s API (kube-apiserver) را برای تغییراتی که در این سرویس ایجاد می‌شود، نظارت می‌کند و گره‌هایی را که این پادها روی آنها اجرا می‌شوند را پیگیری می‌کند. سپس یک تماس aXAPI (REST API) با Thunder ADC برقرار می کند و به طور خودکار این گره ها را به عنوان اعضای گروه سرویس در Thunder ADC پیکربندی می کند.

این امر فرآیند پیکربندی Thunder ADC را تا حد زیادی ساده و خودکار می کند زیرا خدمات جدید در کلاستر K8s مستقر می شوند. همچنین منحنی یادگیری را برای مهندسان DevOps کاهش می‌دهد، زیرا آنها می‌توانند پارامترهای پیکربندی SLB را با استفاده از فایل Ingress Resource مشخص کنند، به‌جای اینکه زمان صرف یادگیری دستورات پیکربندی برای Thunder ADC کنند.

برای ارسال ترافیک به Pods، راه حل A10 از دو حالت عملکرد اصلی پشتیبانی می کند:

تعادل بار در سطح گره: در این حالت Thunder ADC ترافیک را به NodePort اختصاص داده شده در هر گره برای برنامه ارسال می کند. پس از رسیدن به گره، ترافیک به صورت داخلی توسط خوشه K8s متعادل شده و به Pods ارسال می شود. در این روش، متعادل کننده بار در سطح گره کار می کند و نه در سطح Pod. این به این معنی است که اگر یک گره دارای ۱۰ Pod و دیگری دارای ۲۰ Pod باشد، ترافیک همچنان به طور مساوی بین دو گره توزیع می شود (با فرض تعادل بار چرخشی) که منجر به توزیع نابرابر ترافیک در سطح Pod می شود.

image 4 - ترافیک لود بالانسر به برنامه ها در خوشه Kubernetes

متعادل کردن بار در سطح Pod: در نسخه آینده، TKC می‌تواند Thunder ADC را برای ارسال مستقیم ترافیک به Pods برنامه‌ریزی کند و مکانیزم متعادل‌سازی بار داخلی خوشه Kubernetes را دور بزند. این با استفاده از IP در تونل های IP به شبکه Pod در هر گره به دست می آید. در این حالت، متعادل‌سازی بار در سطح Pod انجام می‌شود، در نتیجه توزیع متعادل ترافیک بین پادها تضمین می‌شود (با فرض تعادل بار دورگرد). با این حال، این گزینه مستلزم آن است که پلاگین Container Network Interface (CNI) مورد استفاده با کلاس K8s از تبلیغات زیرشبکه Pod (به عنوان مثال، افزونه Calico CNI) پشتیبانی کند.

image 5 - ترافیک لود بالانسر به برنامه ها در خوشه Kubernetes

علاوه بر پیکربندی خودکار Thunder ADC توسط TKC، راه حل A10 مزایای اضافی زیر را ارائه می دهد:

پشتیبانی از ابزارهای اتوماسیون: راه حل A10 را می توان به راحتی از طریق پشتیبانی از ابزارهای اتوماسیون مانند Terraform و Ansible در فرآیندهای DevOps موجود ادغام کرد.

پشتیبانی از متعادل‌سازی بار L4 و L7: با راه‌حل A10، انعطاف‌پذیری لازم برای انجام تعادل بار L4 و L7 را مطابق با الزامات دارید. این برخلاف راه‌حل‌های Ingress Controller است که فقط از مسیریابی L7 (HTTP/HTTPS) پشتیبانی می‌کنند.

مدیریت ترافیک با کارایی بالا: Thunder ADC خط‌مشی‌های مدیریت ترافیک درجه سازمانی، از جمله بازنویسی سرصفحه، پهنای باند یا محدود کردن نرخ برنامه، و فهرستی از رمزهای TLS برای سیاست‌های امنیتی را ارائه می‌کند.

خط‌مشی‌های متمرکز: با عبور تمام ترافیک برنامه‌ها از Thunder ADC، یک نقطه مرکزی برای اعمال و اجرای سیاست‌های مربوط به امنیت یا هر نیاز تجاری به طور کلی فراهم می‌کند.

تجزیه و تحلیل متمرکز: هنگامی که همراه با A10 Harmony Controller® مستقر می شود، تیم های DevOps/NetOps می توانند تجزیه و تحلیل ترافیک متمرکز را برای عیب یابی آسان تر و سریع تر دریافت کنند که منجر به زمان کار مداوم و رضایت مشتری می شود. راه حل A10 همچنین از ابزارهای نظارت منبع باز مانند Prometheus/Grafana پشتیبانی می کند و به تیم هایی که از این ابزارها استفاده می کنند اجازه می دهد به این کار ادامه دهند.

مجوز انعطاف پذیر: با A10’s FlexPool، یک مدل اشتراک نرم افزاری، سازمان ها انعطاف پذیری برای تخصیص و توزیع ظرفیت در چندین سایت با توجه به نیازهای کسب و کار و برنامه آنها دارند.

siteadmin

راه آسان‌تری برای ارتباط با کاربران‌مان پیدا کرده‌ایم :) عضویت در کانال

مطالب زیر را حتما بخوانید:

قوانین ارسال دیدگاه در سایت

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

نظرات کاربران

    متاسفیم! برای ثبت دیدگاه باید وارد شوید!

    لینک کوتاه :
    0