برنامه نویسی

K8sGPT + Ollama – یک راه حل تشخیص خودکار رایگان Kubernetes

Summarize this content to 400 words in Persian Lang
من پیش نویس های وبلاگم را در آخر هفته بررسی کردم و این یکی را پیدا کردم. به یاد دارم که حدود یک سال پیش آن را با “ابزار تشخیص خودکار Kubernetes: k8sgpt-operator” (به زبان چینی ارسال شده) نوشتم. به نظر می رسد تعلل من به حد بحرانی رسیده است. در ابتدا، من قصد داشتم از K8sGPT + LocalAI استفاده کنم. با این حال، پس از امتحان Ollama، آن را کاربر پسندتر یافتم. Ollama همچنین از OpenAI API پشتیبانی می کند، بنابراین تصمیم گرفتم به استفاده از Ollama روی بیاورم.

پس از انتشار مقاله معرفی اپراتور k8sgpt، برخی از خوانندگان به مانع بالای ورود برای استفاده از OpenAI اشاره کردند. این موضوع در واقع چالش برانگیز است اما غیر قابل حل نیست. با این حال، این مقاله در مورد حل آن مشکل نیست، بلکه معرفی جایگزینی برای OpenAI: Olama است. اواخر سال گذشته، k8sgpt وارد سندباکس CNCF شد.

1. نصب Olama

Ollama یک ابزار مدل بزرگ منبع باز است که به شما امکان می دهد به راحتی مدل های بزرگ مختلف را به صورت محلی یا در فضای ابری نصب و اجرا کنید. بسیار کاربرپسند است و با دستورات ساده قابل اجرا است. در macOS، می توانید آن را با یک دستور با استفاده از homebrew نصب کنید:

brew install ollama

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

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

آخرین نسخه 0.1.44 است.

ollama -v
Warning: could not connect to a running Ollama instance
Warning: client version is 0.1.44

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

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

در لینوکس نیز می توانید آن را با اسکریپت رسمی نصب کنید.

curl -sSL https://ollama.com/install.sh | sh

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

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

اوللاما را راه اندازی کنید و آدرس گوش دادن را روی آن تنظیم کنید 0.0.0.0 از طریق یک متغیر محیطی برای اجازه دسترسی از کانتینرها یا کلاسترهای K8s.

OLLAMA_HOST=0.0.0.0 ollama start


time=2024-06-16T07:54:57.329+08:00 level=INFO source=routes.go:1057 msg=”Listening on 127.0.0.1:11434 (version 0.1.44)”
time=2024-06-16T07:54:57.329+08:00 level=INFO source=payload.go:30 msg=”extracting embedded files” dir=/var/folders/9p/2tp6g0896715zst_bfkynff00000gn/T/ollama1722873865/runners
time=2024-06-16T07:54:57.346+08:00 level=INFO source=payload.go:44 msg=”Dynamic LLM libraries [metal]”
time=2024-06-16T07:54:57.385+08:00 level=INFO source=types.go:71 msg=”inference compute” id=0 library=metal compute=”” driver=0.0 name=”” total=”21.3 GiB” available=”21.3 GiB”

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

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

2. دانلود و اجرای مدل های بزرگ

Llama3، یکی از مدل های بزرگ محبوب، در ماه آوریل توسط متا منبع باز شد. Llama3 دارای دو نسخه 8B و 70B است.

من آن را روی macOS اجرا می کنم، بنابراین نسخه 8B را انتخاب کردم. نسخه 8B 4.7 گیگابایت است و دانلود با اتصال به اینترنت سریع 3-4 دقیقه طول می کشد.

ollama run llama3

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

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

در M1 Pro من با 32 گیگابایت حافظه، حدود 12 ثانیه طول می کشد تا شروع شود.

time=2024-06-17T09:30:25.070+08:00 level=INFO source=server.go:572 msg=”llama runner started in 12.58 seconds”

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

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

هر پرس و جو حدود 14 ثانیه طول می کشد.

curl http://localhost:11434/api/generate -d ‘{
“model”: “llama3”,
“prompt”: “Why is the sky blue?”,
“stream”: false
}’

….
“total_duration”:14064009500,”load_duration”:1605750,”prompt_eval_duration”:166998000,”eval_count”:419,”eval_duration”:13894579000}

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

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

3. پیکربندی K8sGPT CLI Backend

اگر می خواهید k8sgpt-operator را آزمایش کنید، می توانید از این مرحله صرف نظر کنید.

ما از Ollama REST API به عنوان backend برای k8sgpt استفاده خواهیم کرد که به عنوان ارائه دهنده استنتاج عمل می کند. در اینجا، نوع Backend را به عنوان انتخاب می کنیم localai زیرا LocalAI با OpenAI API سازگار است و ارائه‌دهنده واقعی همچنان Olama خواهد بود که Llama را اجرا می‌کند.

k8sgpt auth add –backend localai –model llama3 –baseurl http://localhost:11434/v1

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

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

آن را به عنوان ارائه دهنده پیش فرض تنظیم کنید.

k8sgpt auth default –provider localai
Default provider set to localai

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

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

آزمایش کردن:

با استفاده از تصویر یک pod در k8s ایجاد کنید image-not-exist.

kubectl get po k8sgpt-test
NAME READY STATUS RESTARTS AGE
k8sgpt-test 0/1 ErrImagePull 0 6s

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

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

برای تجزیه و تحلیل خطا از k8sgpt استفاده کنید.

k8sgpt analyze –explain –filter=Pod –namespace=default –output=json

{
“provider”: “localai”,
“errors”: null,
“status”: “ProblemDetected”,
“problems”: 1,
“results”: [
{
“kind”: “Pod”,
“name”: “default/k8sgpt-test”,
“error”: [
{
“Text”: “Back-off pulling image \”image-not-exist\””,
“KubernetesDoc”: “”,
“Sensitive”: [] }
],
“details”: “Error: Back-off pulling image \”image-not-exist\”\n\nSolution: \n1. Check if the image exists on Docker Hub or your local registry.\n2. If not, create the image using a Dockerfile and build it.\n3. If the image exists, check the spelling and try again.\n4. Verify the image repository URL in your Kubernetes configuration file (e.g., deployment.yaml).”,
“parentObject”: “”
}
] }

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

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

4. استقرار و پیکربندی k8sgpt-operator

اپراتور k8sgpt می تواند k8sgpt را در خوشه خودکار کند. با استفاده از Helm می توانید آن را نصب کنید.

helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update
helm install release k8sgpt/k8sgpt-operator -n k8sgpt –create-namespace

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

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

اپراتور k8sgpt دو ​​CRD را ارائه می دهد: K8sGPT برای پیکربندی k8sgpt و Result به نتایج تحلیل خروجی

kubectl api-resources | grep -i gpt
k8sgpts core.k8sgpt.ai/v1alpha1 true K8sGPT
results core.k8sgpt.ai/v1alpha1 true Result

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

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

پیکربندی کنید K8sGPT، با استفاده از آدرس IP Olama برای baseUrl.

kubectl apply -n k8sgpt -f – << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
name: k8sgpt-ollama
spec:
ai:
enabled: true
model: llama3
backend: localai
baseUrl: http://198.19.249.3:11434/v1
noCache: false
filters: [“Pod”] repository: ghcr.io/k8sgpt-ai/k8sgpt
version: v0.3.8
EOF

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

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

پس از ایجاد K8sGPT CR، اپراتور به طور خودکار یک pod برای آن ایجاد می کند. بررسی کردن Result CR همان نتایج را نشان خواهد داد.

kubectl get result -n k8sgpt -o jsonpath='{.items[].spec}’ | jq .
{
“backend”: “localai”,
“details”: “Error: Kubernetes is unable to pull the image \”image-not-exist\” due to it not existing.\n\nSolution: \n1. Check if the image actually exists.\n2. If not, create the image or use an alternative one.\n3. If the image does exist, ensure that the Docker daemon and registry are properly configured.”,
“error”: [
{
“text”: “Back-off pulling image \”image-not-exist\””
}
],
“kind”: “Pod”,
“name”: “default/k8sgpt-test”,
“parentObject”: “”
}

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

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

من پیش نویس های وبلاگم را در آخر هفته بررسی کردم و این یکی را پیدا کردم. به یاد دارم که حدود یک سال پیش آن را با “ابزار تشخیص خودکار Kubernetes: k8sgpt-operator” (به زبان چینی ارسال شده) نوشتم. به نظر می رسد تعلل من به حد بحرانی رسیده است. در ابتدا، من قصد داشتم از K8sGPT + LocalAI استفاده کنم. با این حال، پس از امتحان Ollama، آن را کاربر پسندتر یافتم. Ollama همچنین از OpenAI API پشتیبانی می کند، بنابراین تصمیم گرفتم به استفاده از Ollama روی بیاورم.


پس از انتشار مقاله معرفی اپراتور k8sgpt، برخی از خوانندگان به مانع بالای ورود برای استفاده از OpenAI اشاره کردند. این موضوع در واقع چالش برانگیز است اما غیر قابل حل نیست. با این حال، این مقاله در مورد حل آن مشکل نیست، بلکه معرفی جایگزینی برای OpenAI: Olama است. اواخر سال گذشته، k8sgpt وارد سندباکس CNCF شد.

1. نصب Olama

Ollama یک ابزار مدل بزرگ منبع باز است که به شما امکان می دهد به راحتی مدل های بزرگ مختلف را به صورت محلی یا در فضای ابری نصب و اجرا کنید. بسیار کاربرپسند است و با دستورات ساده قابل اجرا است. در macOS، می توانید آن را با یک دستور با استفاده از homebrew نصب کنید:

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

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

آخرین نسخه 0.1.44 است.

ollama -v 
Warning: could not connect to a running Ollama instance
Warning: client version is 0.1.44
وارد حالت تمام صفحه شوید

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

در لینوکس نیز می توانید آن را با اسکریپت رسمی نصب کنید.

curl -sSL https://ollama.com/install.sh | sh
وارد حالت تمام صفحه شوید

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

اوللاما را راه اندازی کنید و آدرس گوش دادن را روی آن تنظیم کنید 0.0.0.0 از طریق یک متغیر محیطی برای اجازه دسترسی از کانتینرها یا کلاسترهای K8s.

OLLAMA_HOST=0.0.0.0 ollama start

...
time=2024-06-16T07:54:57.329+08:00 level=INFO source=routes.go:1057 msg="Listening on 127.0.0.1:11434 (version 0.1.44)"
time=2024-06-16T07:54:57.329+08:00 level=INFO source=payload.go:30 msg="extracting embedded files" dir=/var/folders/9p/2tp6g0896715zst_bfkynff00000gn/T/ollama1722873865/runners
time=2024-06-16T07:54:57.346+08:00 level=INFO source=payload.go:44 msg="Dynamic LLM libraries [metal]"
time=2024-06-16T07:54:57.385+08:00 level=INFO source=types.go:71 msg="inference compute" id=0 library=metal compute="" driver=0.0 name="" total="21.3 GiB" available="21.3 GiB"
وارد حالت تمام صفحه شوید

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

2. دانلود و اجرای مدل های بزرگ

Llama3، یکی از مدل های بزرگ محبوب، در ماه آوریل توسط متا منبع باز شد. Llama3 دارای دو نسخه 8B و 70B است.

من آن را روی macOS اجرا می کنم، بنابراین نسخه 8B را انتخاب کردم. نسخه 8B 4.7 گیگابایت است و دانلود با اتصال به اینترنت سریع 3-4 دقیقه طول می کشد.

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

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

در M1 Pro من با 32 گیگابایت حافظه، حدود 12 ثانیه طول می کشد تا شروع شود.

time=2024-06-17T09:30:25.070+08:00 level=INFO source=server.go:572 msg="llama runner started in 12.58 seconds"
وارد حالت تمام صفحه شوید

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

هر پرس و جو حدود 14 ثانیه طول می کشد.

curl http://localhost:11434/api/generate -d '{
  "model": "llama3",
  "prompt": "Why is the sky blue?",
  "stream": false
}'

....
"total_duration":14064009500,"load_duration":1605750,"prompt_eval_duration":166998000,"eval_count":419,"eval_duration":13894579000}
وارد حالت تمام صفحه شوید

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

3. پیکربندی K8sGPT CLI Backend

اگر می خواهید k8sgpt-operator را آزمایش کنید، می توانید از این مرحله صرف نظر کنید.

ما از Ollama REST API به عنوان backend برای k8sgpt استفاده خواهیم کرد که به عنوان ارائه دهنده استنتاج عمل می کند. در اینجا، نوع Backend را به عنوان انتخاب می کنیم localai زیرا LocalAI با OpenAI API سازگار است و ارائه‌دهنده واقعی همچنان Olama خواهد بود که Llama را اجرا می‌کند.

k8sgpt auth add --backend localai --model llama3 --baseurl http://localhost:11434/v1
وارد حالت تمام صفحه شوید

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

آن را به عنوان ارائه دهنده پیش فرض تنظیم کنید.

k8sgpt auth default --provider localai
Default provider set to localai
وارد حالت تمام صفحه شوید

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

آزمایش کردن:

با استفاده از تصویر یک pod در k8s ایجاد کنید image-not-exist.

kubectl get po k8sgpt-test
NAME          READY   STATUS         RESTARTS   AGE
k8sgpt-test   0/1     ErrImagePull   0          6s
وارد حالت تمام صفحه شوید

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

برای تجزیه و تحلیل خطا از k8sgpt استفاده کنید.

k8sgpt analyze --explain --filter=Pod --namespace=default --output=json

{
  "provider": "localai",
  "errors": null,
  "status": "ProblemDetected",
  "problems": 1,
  "results": [
    {
      "kind": "Pod",
      "name": "default/k8sgpt-test",
      "error": [
        {
          "Text": "Back-off pulling image \"image-not-exist\"",
          "KubernetesDoc": "",
          "Sensitive": []
        }
      ],
      "details": "Error: Back-off pulling image \"image-not-exist\"\n\nSolution: \n1. Check if the image exists on Docker Hub or your local registry.\n2. If not, create the image using a Dockerfile and build it.\n3. If the image exists, check the spelling and try again.\n4. Verify the image repository URL in your Kubernetes configuration file (e.g., deployment.yaml).",
      "parentObject": ""
    }
  ]
}
وارد حالت تمام صفحه شوید

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

4. استقرار و پیکربندی k8sgpt-operator

اپراتور k8sgpt می تواند k8sgpt را در خوشه خودکار کند. با استفاده از Helm می توانید آن را نصب کنید.

helm repo add k8sgpt https://charts.k8sgpt.ai/
helm repo update
helm install release k8sgpt/k8sgpt-operator -n k8sgpt --create-namespace
وارد حالت تمام صفحه شوید

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

اپراتور k8sgpt دو ​​CRD را ارائه می دهد: K8sGPT برای پیکربندی k8sgpt و Result به نتایج تحلیل خروجی

kubectl api-resources  | grep -i gpt
k8sgpts                                        core.k8sgpt.ai/v1alpha1                true         K8sGPT
results                                        core.k8sgpt.ai/v1alpha1                true         Result
وارد حالت تمام صفحه شوید

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

پیکربندی کنید K8sGPT، با استفاده از آدرس IP Olama برای baseUrl.

kubectl apply -n k8sgpt -f - << EOF
apiVersion: core.k8sgpt.ai/v1alpha1
kind: K8sGPT
metadata:
  name: k8sgpt-ollama
spec:
  ai:
    enabled: true
    model: llama3
    backend: localai
    baseUrl: http://198.19.249.3:11434/v1
  noCache: false
  filters: ["Pod"]
  repository: ghcr.io/k8sgpt-ai/k8sgpt
  version: v0.3.8
EOF
وارد حالت تمام صفحه شوید

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

پس از ایجاد K8sGPT CR، اپراتور به طور خودکار یک pod برای آن ایجاد می کند. بررسی کردن Result CR همان نتایج را نشان خواهد داد.

kubectl get result -n k8sgpt -o jsonpath='{.items[].spec}' | jq .
{
  "backend": "localai",
  "details": "Error: Kubernetes is unable to pull the image \"image-not-exist\" due to it not existing.\n\nSolution: \n1. Check if the image actually exists.\n2. If not, create the image or use an alternative one.\n3. If the image does exist, ensure that the Docker daemon and registry are properly configured.",
  "error": [
    {
      "text": "Back-off pulling image \"image-not-exist\""
    }
  ],
  "kind": "Pod",
  "name": "default/k8sgpt-test",
  "parentObject": ""
}
وارد حالت تمام صفحه شوید

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

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

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

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

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