برنامه نویسی

Kubernetes و AI: 3 ابزار منبع باز ارائه شده توسط OpenAI

طبق گزارش اخیر Cloud-Native AI که توسط CNCF در خلال کنفرانس KubeCon + CloudNativeCon اروپا تولید شد، هوش مصنوعی به اپراتورها و توسعه دهندگان این امکان را می دهد که هوشمندتر کار کنند، نه سخت تر. همگرایی روش‌های Cloud Native با هوش مصنوعی (AI) به عنوان یک نیروی دگرگون کننده ظاهر شده است که صنایع را تغییر می‌دهد و نوآوری را پیش می‌برد. استفاده از هوش مصنوعی برای بهبود سیستم‌های بومی ابری دیگر علمی تخیلی نیست.

تصویر 1

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

Kubernetes، پلتفرم ارکستراسیون کانتینر، ابزاری قدرتمند برای مدیریت برنامه های کاربردی در فضای ابری است. اما اگر بتوانید مقداری عضله هوش مصنوعی را به گردش کار Kubernetes خود اضافه کنید چه؟ اینجاست که OpenAI و این 3 پروژه منبع باز وارد می شوند: مشتری OpenAI Kubectl، K8sGPT و KoPylot. این ابزارهای نوآورانه از قابلیت‌های OpenAI برای ساده‌سازی وظایف، خودکارسازی فرآیندها و کسب بینش عمیق‌تر از خوشه‌های Kubernetes استفاده می‌کنند.

بیایید غواصی کنیم و بررسی کنیم که چگونه آنها می توانند تجربه Kubernetes شما را افزایش دهند.

https://www.youtube.com/watch?v=SoEAFawQ9y4

1. KoPylot

KoPylot یک راه حل نظارت بر عملکرد اپلیکیشن (APM) بومی ابری است که روی Kubernetes اجرا می شود. این برای کمک به توسعه دهندگان و تیم های عملیاتی در تشخیص و عیب یابی مشکلات در سیستم های پیچیده توزیع شده طراحی شده است. این اطلاعات بینش‌های بی‌درنگ درباره عملکرد برنامه، از جمله معیارها، ردیابی‌ها و گزارش‌ها ارائه می‌کند تا به تیم‌ها در شناسایی و حل سریع مشکلات کمک کند.

KoPylot برای کمک به تیم ها در نظارت و تشخیص آسان برنامه های Kubernetes طراحی شده است. این یک نمای جامع از عملکرد برنامه، از جمله معیارهای بی‌درنگ، ردیابی‌ها و گزارش‌ها را ارائه می‌کند تا به تیم‌ها در شناسایی و حل سریع مشکلات کمک کند.

امکانات

KoPylot طیف گسترده ای از ویژگی ها را برای کمک به تیم ها در نظارت و تشخیص برنامه های Kubernetes ارائه می دهد، از جمله:

  • معیارهای زمان واقعی: KoPylot معیارهای بی‌درنگ برای بارهای کاری Kubernetes از جمله CPU، حافظه و استفاده از شبکه ارائه می‌کند. همچنین معیارهایی را برای معیارهای سطح برنامه سفارشی ارائه می دهد که می تواند برای نظارت بر رفتارها و عملکرد برنامه خاص مورد استفاده قرار گیرد.

  • ردیابی توزیع شده: KoPylot قابلیت‌های ردیابی توزیع شده را ارائه می‌کند و به تیم‌ها اجازه می‌دهد تا درخواست‌ها را در چندین میکروسرویس ردیابی کنند و گلوگاه‌ها و مشکلات عملکرد را شناسایی کنند.

  • گزارش‌ها: KoPylot قابلیت‌های جمع‌آوری گزارش‌ها را فراهم می‌کند و به تیم‌ها اجازه می‌دهد تا لاگ‌ها را از چندین کانتینر و غلاف در حال اجرا در Kubernetes متمرکز کنند.

  • حسابرسی: KoPylot قابلیت های ممیزی را فراهم می کند و به تیم ها اجازه می دهد تغییرات منابع Kubernetes را ردیابی کنند و دسترسی به سرور Kubernetes API را نظارت کنند.

  • چت: KoPylot یک رابط چت ارائه می دهد که به تیم ها اجازه می دهد با یکدیگر همکاری کنند و بینش ها را در زمان واقعی به اشتراک بگذارند.

  • تشخیص دادن: KoPylot یک ویژگی تشخیص را ارائه می دهد که به تیم ها اجازه می دهد تا به سرعت مسائل را شناسایی کرده و راه حل های بالقوه را پیدا کنند.

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

KoPylot با ادغام با خوشه‌های Kubernetes و نمایش یک رابط مبتنی بر وب کار می‌کند که نمای جامعی از حجم کاری خود را در اختیار کاربران قرار می‌دهد. معماری KoPilot شامل مجموعه ای از میکروسرویس ها است که از طریق HTTP و gRPC با یکدیگر ارتباط برقرار می کنند.

هنگامی که کاربر وارد KoPylot می شود، داشبوردی به او ارائه می شود که نمای کلی از تمام بارهای کاری در حال اجرا در خوشه Kubernetes را نشان می دهد. از داشبورد، کاربران می‌توانند بارهای کاری فردی را برای مشاهده جزئیاتی مانند استفاده از منابع، وضعیت و گزارش‌ها بررسی کنند.

KoPylot با استفاده از سرور Kubernetes API با خوشه های Kubernetes ارتباط برقرار می کند. سرور API یک رابط استاندارد برای تعامل با خوشه‌های Kubernetes فراهم می‌کند و KoPilot را قادر می‌سازد تا بارهای کاری در حال اجرا بر روی هر خوشه Kubernetes را بدون توجه به زیرساخت‌های زیربنایی مدیریت و نظارت کند.

میکروسرویس های KoPylot به گونه ای طراحی شده اند که بسیار مقیاس پذیر و مقاوم در برابر خطا هستند. میکروسرویس‌ها به‌عنوان غلاف Kubernetes مستقر می‌شوند و می‌توانند با افزایش تقاضای بار کاری به صورت افقی مقیاس شوند. علاوه بر این، میکروسرویس‌های KoPilot به گونه‌ای طراحی شده‌اند که به‌طور خودکار از خرابی‌ها بازیابی می‌شوند و اطمینان حاصل می‌کنند که سیستم همیشه در دسترس و پاسخ‌گو باقی می‌ماند.

برای تشخیص مشکلات در یک خوشه Kubernetes، KoPylot یک ابزار تشخیصی ارائه می دهد که می تواند به شناسایی سریع مشکلات کمک کند. ابزار تشخیصی مشکلات رایج و پیکربندی‌های نادرست را در خوشه بررسی می‌کند و پیشنهاداتی برای حل آنها ارائه می‌دهد. به عنوان مثال، می‌تواند بررسی کند که آیا پادهایی در حال اجرا نیستند، آیا پادهای معلقی وجود دارد یا اینکه گره‌ها غیرقابل دسترسی هستند. ابزار تشخیصی همچنین می تواند با تجزیه و تحلیل استفاده از منابع گره ها و غلاف ها به شناسایی مشکلات عملکرد در خوشه کمک کند. اطلاعات دقیقی در مورد استفاده از CPU و حافظه و همچنین معیارهای ورودی/خروجی شبکه و دیسک ارائه می دهد.

علاوه بر نظارت و تشخیص مشکلات، KoPylot همچنین یک رابط چت ارائه می دهد که به کاربران اجازه می دهد با استفاده از زبان طبیعی با سیستم تعامل داشته باشند. این ویژگی به کاربران امکان می دهد در مورد وضعیت خوشه، پیکربندی منابع خاص یا هر جنبه دیگری از سیستم سؤال بپرسند و پاسخ بگیرند.

در نهایت، KoPylot شامل یک گزارش حسابرسی است که تمام اقدامات انجام شده توسط کاربران در سیستم را ثبت می کند. از این گزارش می توان برای ردیابی تغییرات ایجاد شده در خوشه و شناسایی هرگونه مشکل امنیتی بالقوه استفاده کرد.

مثال زیر نمونه ای از استفاده از KoPylot برای انجام یک بررسی سلامت در یک سرویس است:

kopylot diagnose check -s my-service -n my-namespace
وارد حالت تمام صفحه شوید

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

این دستور مجموعه ای از بررسی ها را روی سرویس مشخص شده اجرا می کند، از جمله بررسی آمادگی pod، کدهای وضعیت HTTP و اتصال TCP. اگر مشکلی پیدا شود، KoPylot گزارش مفصلی از مشکل ارائه می دهد.

نصب و راه اندازی

برای نصب KoPylot در Kubernetes، می توانید مراحل زیر را دنبال کنید:

1. یک کلید API از OpenAI درخواست می کند

با استفاده از دستور زیر کلید را صادر کنید:

export KOPYLOT_AUTH_TOKEN=your_api_key
وارد حالت تمام صفحه شوید

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

2. KoPylot را با استفاده از pip نصب کنید:

# pip install kopylot
وارد حالت تمام صفحه شوید

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

3. KoPylot را اجرا کنید

# kopylot --help
وارد حالت تمام صفحه شوید

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

Usage: kopylot [OPTIONS] COMMAND [ARGS]...                                           

╭─ Options ──────────────────────────────────────────────────────────────────────────╮
│ --version                                                                          │
│ --install-completion        [bash|zsh|fish|powershell  Install completion for the  │
│                             |pwsh]                     specified shell.            │
│                                                        [default: None]             │
│ --show-completion           [bash|zsh|fish|powershell  Show completion for the     │
│                             |pwsh]                     specified shell, to copy it │
│                                                        or customize the            │
│                                                        installation.               │
│                                                        [default: None]             │
│ --help                                                 Show this message and exit. │
╰────────────────────────────────────────────────────────────────────────────────────╯
╭─ Commands ─────────────────────────────────────────────────────────────────────────╮
│ audit     Audit a pod, deployment, or service using an LLM model.                  │
│ chat      Start a chat with kopylot to generate kubectl commands based your        │
│           inputs.                                                                  │
│ ctl       A wrapper around kubectl. The arguments passed to the ctl subcommand are │
│           interpreted by kubectl.                                                  │
│ diagnose  Diagnose a resource e.g. pod, deployment, or service using an LLM model. │
╰────────────────────────────────────────────────────────────────────────────────────╯
وارد حالت تمام صفحه شوید

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

راه اندازی محلی

اگر ترجیح می دهید محیط توسعه خود را به صورت محلی تنظیم کنید، مطمئن شوید که Poetry را روی سیستم خود نصب کرده اید. سپس، این مراحل را دنبال کنید:

مخزن KoPylot را شبیه سازی کنید:

git clone https://github.com/avsthiago/kopylot
وارد حالت تمام صفحه شوید

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

به پوشه پروژه بروید

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

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

وابستگی های پروژه را با استفاده از Poetry نصب کنید

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

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

مثال حجم کار واقعی

اکنون که ویژگی‌ها و عملکرد KoPylot را پوشش داده‌ایم، بیایید نگاهی به یک مثال حجم کاری واقعی بیاندازیم تا ببینیم چگونه می‌توان از آن در عمل استفاده کرد.
در این مثال، ما از KoPylot برای تشخیص مشکل در استقرار Kubernetes استفاده خواهیم کرد.

یک نمونه کار با استفاده از مانیفست YAML زیر مستقر کنید:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx
  labels:
    app: nginx
spec:
  replicas: 1
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:latest
        ports:
        - containerPort: 80

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

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

kubectl apply -f nginx-deployment.yaml
وارد حالت تمام صفحه شوید

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

دستور زیر را برای تشخیص استقرار با استفاده از KoPylot اجرا کنید:

kopilot diagnose deployment nginx --namespace default
وارد حالت تمام صفحه شوید

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

KoPylot نتیجه زیر را به دست می دهد:

===========================================================================
Diagnosing Deployment nginx in namespace default
===========================================================================

---------------------------------------------------------------------------
Deployment nginx is running
---------------------------------------------------------------------------

  Reason: The deployment is running correctly.

---------------------------------------------------------------------------
Deployment nginx is accessible
---------------------------------------------------------------------------

  Reason: The deployment is accessible via the service.

---------------------------------------------------------------------------
Deployment nginx has enough resources
---------------------------------------------------------------------------

  Reason: The deployment has enough resources.

---------------------------------------------------------------------------
Deployment nginx is not outdated
---------------------------------------------------------------------------

  Reason: The deployment is using the latest available image.

===========================================================================
Diagnosis complete.
===========================================================================
وارد حالت تمام صفحه شوید

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

این نشان می دهد که استقرار به درستی اجرا می شود و هیچ مشکلی پیدا نشد.

به طور کلی، KoPylot ابزار مفیدی برای تشخیص و عیب یابی بارهای کاری Kubernetes است. رابط چت مبتنی بر وب و CLI آن، استفاده از آن را آسان کرده و برای تمام سطوح کاربران قابل دسترسی است.

2. K8sGPT

K8sGPT ابزاری است که از NLP برای تجزیه و تحلیل گزارش‌ها و سایر داده‌های خوشه‌های Kubernetes برای شناسایی و تشخیص مشکلات استفاده می‌کند. مجموعه‌ای از آنالایزرهای داخلی دارد که برای شناسایی مشکلات رایج مانند خرابی غلاف، خرابی سرویس‌ها و پیکربندی‌های نادرست ورودی طراحی شده‌اند. K8sGPT بر روی مدل زبان GPT-3 OpenAI ساخته شده است که به آن اجازه می دهد زبان طبیعی را بفهمد و توضیحاتی را ارائه دهد که به راحتی قابل درک باشد.

K8sGPT بر تریاژ و تشخیص مشکلات در خوشه شما متمرکز است. این ابزاری برای مهندسین SRE، Platform و DevOps است تا به آنها کمک کند تا بفهمند در کلاسترشان چه می‌گذرد و علت اصلی یک مشکل را پیدا کنند. این می تواند به شما کمک کند تا از سر و صدای سیاهه ها و چندین ابزار جلوگیری کنید تا علت اصلی یک مشکل را پیدا کنید.

نحوه عملکرد K8sGPT

K8sGPT از مجموعه ای از تحلیلگرها استفاده می کند که برای شناسایی مسائل در خوشه های Kubernetes طراحی شده اند. این تحلیلگرها از NLP برای تجزیه و تحلیل گزارش‌ها، معیارها و سایر داده‌های خوشه شما برای شناسایی مشکلات احتمالی استفاده می‌کنند. هنگامی که یک مشکل شناسایی می شود، K8sGPT توضیحی را به زبان طبیعی ارائه می دهد که به راحتی قابل درک است. این به شما امکان می دهد تا به سرعت مشکل را درک کنید و اقدامات لازم را برای حل آن انجام دهید.

K8sGPT بر روی مدل زبان GPT-3 OpenAI ساخته شده است که به آن اجازه می دهد زبان طبیعی را درک کند. این بدان معنی است که شما می توانید سوالات K8sGPT را در مورد کلاستر خود به زبان انگلیسی ساده بپرسید و پاسخی ارائه می دهد که به راحتی قابل درک است. به عنوان مثال، می توانید از K8sGPT بپرسید “چرا غلاف من خراب می شود؟” و توضیحی در مورد دلیل خراب شدن غلاف و اقداماتی که می توانید برای رفع مشکل انجام دهید ارائه می دهد.

نصب و راه اندازی

K8sGPT را می توان بر روی لینوکس، مک و ویندوز نصب کرد. ساده ترین راه برای نصب K8sGPT در لینوکس یا مک، از طریق Homebrew است. برای نصب K8sGPT از طریق Homebrew، دستورات زیر را اجرا کنید:

brew tap k8sgpt-ai/k8sgptbrew install k8sgpt
وارد حالت تمام صفحه شوید

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

اگر هنگام نصب K8sGPT در WSL یا Linux با خطا مواجه شدید، ممکن است نیاز به نصب بسته build-essential داشته باشید. با اجرای دستورات زیر می توانید این کار را انجام دهید:

sudo apt-get updatesudo apt-get install build-essential
وارد حالت تمام صفحه شوید

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

اگر روی ویندوز اجرا می‌کنید، می‌توانید آخرین باینری‌های ویندوز را از تب Release در GitHub دانلود کنید.
هنگامی که k8sgpt نصب شد، می توانید با اجرای دستور version بررسی کنید که کار می کند:

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

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

ایجاد یک کلید API

قبل از اینکه بتوانیم از k8sgpt استفاده کنیم، باید یک کلید API از OpenAI تولید کنیم. برای تولید یک کلید API، دستور زیر را اجرا کنید، این یک پیوند در مرورگر وب پیش‌فرض شما باز می‌کند که در آن می‌توانید یک کلید API ایجاد کنید. هنگامی که یک کلید API ایجاد کردید، می توانید آن را در k8sgpt تنظیم کنید

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

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

این از شما می خواهد که کلید API خود را وارد کنید. هنگامی که کلید API خود را وارد کردید، k8sgpt می تواند از آن برای تجزیه و تحلیل خوشه های Kubernetes شما استفاده کند.

تجزیه و تحلیل خوشه های Kubernetes شما

اکنون که k8sgpt را نصب و احراز هویت کردیم، می‌توانیم خوشه‌های Kubernetes خود را تجزیه و تحلیل کنیم. برای تجزیه و تحلیل یک خوشه Kubernetes، دستور زیر را اجرا کنید:

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

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

این کار خوشه Kubernetes شما را اسکن می کند و هر مشکلی را جستجو می کند. به طور پیش فرض، k8sgpt از همه آنالیزورهای داخلی خود برای تجزیه و تحلیل خوشه شما استفاده می کند.

اگر k8sgpt هر گونه مشکلی را پیدا کند، خلاصه ای از مشکلاتی را که پیدا کرده است را خروجی می دهد. مثلا:

Analyzer: podAnalyzer
  Namespace: default
  Name: nginx-66b6c48dd5-zk6jt
  Kind: Pod
  Reason: CrashLoopBackOff
  Message: Back-off 5m0s restarting failed container=nginx pod=nginx-66b6c48dd5-zk6jt_default(25f13c57-04eb-4a0a-a2f7-17b7564a7944)
 

Refer:   https://kubernetes.io/docs/tasks/debug-application-cluster/debug-running-pod/ 
وارد حالت تمام صفحه شوید

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

این خروجی به ما می گوید که مشکلی با nginx pod در فضای نام پیش فرض وجود دارد. پاد در حالت CrashLoopBackOff است و ظرف nginx در پاد از کار افتاده است و هر 5 دقیقه یکبار راه اندازی مجدد می شود.

اگر می‌خواهید اطلاعات بیشتری در مورد این مشکل ببینید، می‌توانید از آن استفاده کنید --explain پرچم:

k8sgpt analyze --explain
وارد حالت تمام صفحه شوید

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

با این کار توضیح دقیق تری از مسائلی که k8sgpt پیدا کرده است، ارائه می شود.

فیلتر کردن منابع

به‌طور پیش‌فرض، k8sgpt همه منابع را در خوشه Kubernetes شما تجزیه و تحلیل می‌کند. با این حال، می توانید منابعی را که k8sgpt تجزیه و تحلیل می کند با استفاده از پرچم –filter فیلتر کنید.
از فیلترها برای کنترل منابع Kubernetes استفاده می شود. به طور پیش فرض، تمام فیلترها فعال هستند. با استفاده از دستور فرعی فیلترها می توانید فیلترها را مدیریت کنید.
برای مشاهده لیست فیلترها، اجرا کنید:
افزودن فیلتر، حذف، فهرست و موارد دیگر

k8sgpt filters list
k8sgpt filters add [filter]
k8sgpt filters add Service,Pod
k8sgpt filters remove [filter]
k8sgpt filters remove Service
وارد حالت تمام صفحه شوید

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

می توانید منابع را بر اساس فضای نام با استفاده از پرچم –namespace فیلتر کنید:

k8sgpt analyze --namespace=default
وارد حالت تمام صفحه شوید

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

آنالایزرهای سفارشی

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

برای نوشتن یک تحلیلگر سفارشی، باید یک بسته Go جدید ایجاد کنید که رابط Analyzer را پیاده سازی کند:

type Analyzer interface {
// Analyze analyzes the given Kubernetes resource and returns any issues found
Analyze(resource *unstructured.Unstructured) ([ ]*Issue, error)
// Name returns the name of the analyzer
Name() string
// Enabled returns whether the analyzer is enabled
Enabled() bool
}
وارد حالت تمام صفحه شوید

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

متد Analyze یک منبع Kubernetes را به عنوان ورودی می گیرد و مجموعه ای از مسائل پیدا شده را برمی گرداند. متد Name نام تحلیلگر را برمی گرداند و متد Enabled نشان می دهد که آیا تحلیلگر فعال است یا خیر.
هنگامی که تحلیلگر سفارشی خود را نوشتید، می توانید آن را با k8sgpt با فراخوانی تابع RegisterAnalyzer ثبت کنید:

RegisterAnalyzer(name string, analyzer Analyzer)
k8sgpt.RegisterAnalyzer("MyAnalyzer", &MyAnalyzer{})
وارد حالت تمام صفحه شوید

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

سپس می توانید از --filter پرچم برای فیلتر کردن توسط تحلیلگر سفارشی شما:

k8sgpt analyze --filter=MyAnalyzer
وارد حالت تمام صفحه شوید

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

همچنین می توانید چندین فیلتر را با هم ترکیب کنید تا فیلترهای پیچیده تری ایجاد کنید. برای مثال، دستور زیر فقط منابع Pod را در فضای نام «پیش‌فرض» با برچسب «app=myapp» تجزیه و تحلیل می‌کند:

k8sgpt analyze --filter=Pod --namespace=default --label-selector=app=myapp
وارد حالت تمام صفحه شوید

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

K8sGPT ابزار قدرتمندی است که می تواند به شما در تشخیص و تریاژ مسائل در خوشه های Kubernetes کمک کند. توانایی آن در تجزیه و تحلیل گزارش‌ها و منابع Kubernetes با استفاده از پردازش زبان طبیعی و هوش مصنوعی، آن را از سایر ابزارهای نظارت متمایز می‌کند.

با نصب و پیکربندی K8sGPT، می‌توانید به راحتی خوشه‌های خود را اسکن کنید، مشکلات را شناسایی کنید و توصیه‌هایی برای رفع آنها دریافت کنید. علاوه بر این، آنالایزرها و فیلترهای داخلی آن، سفارشی کردن تجزیه و تحلیل را برای مطابقت با نیازهای خاص شما آسان می کند. خواه یک مهندس SRE، پلتفرم یا DevOps باشید، K8sGPT می تواند به شما کمک کند تا در مورد خوشه های Kubernetes خود اطلاعاتی کسب کنید و کار خود را آسان تر کند. امروز آن را امتحان کنید و ببینید چگونه می تواند به شما در بهبود گردش کار نظارت و عیب یابی Kubernetes کمک کند!

3. Kubectl OpenAI Client

پروژه مشتری OpenAI Kubectl یک پلاگین kubectl برای تولید و اعمال مانیفست های Kubernetes با استفاده از OpenAI GPT است.

شروع شدن

  • Docker Desktop را نصب کنید
  • Kubectl-ai را نصب کنید

می توانید آن را مستقیماً با استفاده از Homebrew روی مک بوک خود نصب کنید:

brew tap sozercan/kubectl-ai 
https://github.com/sozercan/kubectl-ai
brew install kubectl-ai
وارد حالت تمام صفحه شوید

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

کلیدهای OpenAI را دریافت کنید

می توانید کلیدهای OpenAI را از اینجا دریافت کنید https://platform.openai.com/account/api-keys

لطفاً توجه داشته باشید: kubectl-ai به یک کلید OpenAI API یا یک کلید Azure OpenAI Service API و نقطه پایانی و یک پیکربندی معتبر Kubernetes نیاز دارد.

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

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

نصب بر روی CentOS

yum install wget
wget https://github.com/sozercan/kubectl-ai/releases/download/v0.0.10/kubectl-ai_linux_amd64.tar.gz
tar xvf kubectl-ai_linux_amd64.tar.gz
mv kubectl-ai /usr/local/bin/kubectl-ai
وارد حالت تمام صفحه شوید

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

راه اندازی Kubeview

استفاده از هلم

با فرض اینکه قبلاً Git and Helm را روی لپ تاپ خود نصب کرده اید، مراحل زیر را دنبال کنید

git clone https://github.com/benc-uk/kubeview
cd kubeview/charts/
helm install kubeview kubeview
وارد حالت تمام صفحه شوید

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

تست آن به صورت محلی

kubectl port-forward svc/kubeview -n default 80:80
وارد حالت تمام صفحه شوید

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

استقرار Pod با استفاده از فضای نام

kubectl ai "Create a namespace called ns1 and deploy a Nginx Pod"        
✨ Attempting to apply the following manifest:

---
apiVersion: v1
kind: Namespace
metadata:
  name: ns1
---
apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: ns1
spec:
  selector:
    matchLabels:
      app: nginx
  replicas: 1
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: nginx
        image: nginx:1.7.9
        ports:
        - containerPort: 80
Use the arrow keys to navigate: ↓ ↑ → ← 
? Would you like to apply this? [Reprompt/Apply/Don't Apply]: 
+   Reprompt
  ▸ Apply
    Don't Apply
وارد حالت تمام صفحه شوید

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

مانیفست YAML که ارائه کرده‌اید، یک Nginx pod اصلی با نام “nginx-pod” ایجاد می‌کند و پورت 80 را در معرض نمایش قرار می‌دهد. برای اعمال این مانیفست و ایجاد pod، می‌توانید از دستور kubectl application استفاده کنید. مانیفست را در یک فایل به عنوان مثال nginx-pod.yaml ذخیره کنید و سپس دستور زیر را در ترمینال خود اجرا کنید:

تفاوت بین «ایجاد» و «استقرار» [Be Careful]

kubectl ai "Create a namespace called ns1 and create a Nginx Pod"
✨ Attempting to apply the following manifest:

apiVersion: v1
kind: Namespace
metadata:
  name: ns1
---
apiVersion: v1
kind: Pod
metadata:
  name: nginx
  namespace: ns1
spec:
  containers:
  - name: nginx
    image: nginx:1.7.9
    ports:
    - containerPort: 80
✔ Apply
وارد حالت تمام صفحه شوید

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

دسترسی به Nginx Pod از طریق مرورگر وب

kubectl port-forward nginx 8000:80 -n ns1
Forwarding from 127.0.0.1:8000 -> 80
Forwarding from [::1]:8000 -> 80
Handling connection for 8000
Handling connection for 8000
وارد حالت تمام صفحه شوید

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

گسترش

این مثالی برای استقرار 3 کپی در فضای نام خاص است

kubectl ai "create an nginx deployment with 3 replicas under namespace ns1"
✨ Attempting to apply the following manifest:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: ns1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: webpage
        image: ajeetraina/webpage
        ports:
        - containerPort: 80
✔ Apply
وارد حالت تمام صفحه شوید

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

خدمات

kubectl ai "create an nginx deployment with 3 replicas under namespace ns1 and this time create service type as NodePort"
✨ Attempting to apply the following manifest:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
  namespace: ns1
spec:
  replicas: 3
  selector:
    matchLabels:
      app: nginx
  template:
    metadata:
      labels:
        app: nginx
    spec:
      containers:
      - name: webpage
        image: ajeetraina/webpage
        ports:
        - containerPort: 80
---
apiVersion: v1
kind: Service
metadata:
  name: nginx-service
  namespace: ns1
spec:
  type: NodePort
  selector:
    app: nginx
  ports:
  - protocol: TCP
    port: 80
    targetPort: 80
    nodePort: 30080
Use the arrow keys to navigate: ↓ ↑ → ← 
? Would you like to apply this? [Reprompt/Apply/Don't Apply]: 
+   Reprompt
  ▸ Apply
    Don't Apply
وارد حالت تمام صفحه شوید

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

فهرست کردن منابع Kubernetes

kubectl get po,deploy,svc -n ns1
NAME                                    READY   STATUS    RESTARTS   AGE
pod/nginx-deployment-58945458f5-5pk6b   1/1     Running   0          28s
pod/nginx-deployment-58945458f5-7htd7   1/1     Running   0          28s
pod/nginx-deployment-58945458f5-s6cxm   1/1     Running   0          28s

NAME                               READY   UP-TO-DATE   AVAILABLE   AGE
deployment.apps/nginx-deployment   3/3     3            3           28s

NAME                    TYPE       CLUSTER-IP       EXTERNAL-IP   PORT(S)        AGE
service/nginx-service   NodePort   10.100.230.251           80:30080/TCP   28s
وارد حالت تمام صفحه شوید

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

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

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

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

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