Codelab - การจัดการ Kubernetes ด้วย kubectl-ai ซึ่งเป็นผู้ช่วย Kubernetes ที่ขับเคลื่อนด้วย AI

1. บทนำ

kubectl-ai เป็นอินเทอร์เฟซอัจฉริยะที่ทำงานด้วยระบบ AI ซึ่งจะแปลเจตนาของผู้ใช้เป็นการดำเนินการ Kubernetes ที่แม่นยำ ทำให้การจัดการ Kubernetes เข้าถึงได้ง่ายและมีประสิทธิภาพมากขึ้น

d62a763b2dba5ba7.png

สิ่งที่คุณต้องทำ

  • คุณจะได้ทำงานร่วมกับ kubectl-ai ซึ่งเป็นเครื่องมือผู้ช่วย Kubernetes ที่ทำงานด้วยระบบ AI เพื่อจัดการคลัสเตอร์ GKE

สิ่งที่คุณจะได้เรียนรู้

  • คุณจะสร้างคลัสเตอร์ GKE และตั้งค่า kubectl-ai.
  • คุณจะทำงานใน Kubernetes เช่น การจัดการ การสร้าง การแก้ไขทรัพยากรด้วยการแก้ปัญหาคลัสเตอร์และทรัพยากร

สิ่งที่คุณต้องมี

  • เว็บเบราว์เซอร์ Chrome
  • บัญชี Gmail
  • โปรเจ็กต์ Cloud ที่เปิดใช้การเรียกเก็บเงิน
  • คีย์ Gemini API

Codelab นี้คาดหวังว่าผู้ใช้จะมีความรู้พื้นฐานเกี่ยวกับ Kubernetes

2. ก่อนเริ่มต้น

สร้างโปรเจ็กต์

  1. ใน Google Cloud Console ให้เลือกหรือสร้างโปรเจ็กต์ Google Cloud ในหน้าตัวเลือกโปรเจ็กต์
  2. ตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินสำหรับโปรเจ็กต์ Cloud แล้ว ดูวิธีตรวจสอบว่าได้เปิดใช้การเรียกเก็บเงินในโปรเจ็กต์แล้วหรือไม่
  3. คุณจะใช้ Cloud Shell ซึ่งเป็นสภาพแวดล้อมบรรทัดคำสั่งที่ทำงานใน Google Cloud และโหลด bq ไว้ล่วงหน้า คลิกเปิดใช้งาน Cloud Shell ที่ด้านบนของคอนโซล Google Cloud

รูปภาพปุ่มเปิดใช้งาน Cloud Shell

  1. เมื่อเชื่อมต่อกับ Cloud Shell แล้ว ให้ตรวจสอบว่าคุณได้รับการตรวจสอบสิทธิ์แล้วและตั้งค่าโปรเจ็กต์เป็นรหัสโปรเจ็กต์โดยใช้คำสั่งต่อไปนี้
gcloud auth list
  1. เรียกใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อยืนยันว่าคำสั่ง gcloud รู้จักโปรเจ็กต์ของคุณ
gcloud config list project
  1. หากไม่ได้ตั้งค่าโปรเจ็กต์ ให้ใช้คำสั่งต่อไปนี้เพื่อตั้งค่า
gcloud config set project <YOUR_PROJECT_ID>
  1. เปิดใช้ API ที่จำเป็นผ่านคำสั่งที่แสดงด้านล่าง การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดทนรอ
gcloud services enable cloudresourcemanager.googleapis.com \
                       servicenetworking.googleapis.com \
                       compute.googleapis.com \
                       container.googleapis.com

เมื่อเรียกใช้คำสั่งสำเร็จ คุณควรเห็นข้อความที่คล้ายกับข้อความที่แสดงด้านล่าง

Operation "operations/..." finished successfully.

หากพลาด API ใดไป คุณก็เปิดใช้ได้เสมอในระหว่างการติดตั้งใช้งาน

โปรดดูคำสั่งและการใช้งาน gcloud ในเอกสารประกอบ

3. ตั้งค่าคลัสเตอร์ GKE

ในขั้นตอนนี้ เราจะตั้งค่าคลัสเตอร์ GKE ที่จะใช้เรียกใช้คำสั่ง ตรวจสอบว่าคุณได้ทำตามขั้นตอนก่อนหน้า ตั้งค่ารหัสโปรเจ็กต์ที่ถูกต้อง และเปิดใช้บริการที่จำเป็นในโปรเจ็กต์ Google Cloud แล้ว

สร้างคลัสเตอร์ GKE

เรียกใช้คำสั่งต่อไปนี้ที่ระบุไว้ใน Cloud Shell หากต้องการสร้างคลัสเตอร์ในโซนอื่น คุณสามารถเปลี่ยน--zone value เป็นโซนนั้นได้

gcloud container clusters create my-gke-cluster \
       --num-nodes 2 \
       --machine-type e2-standard-4 \
       --zone us-central1-a

การดำเนินการนี้อาจใช้เวลาสักครู่ โปรดอดทนรอ เมื่อเสร็จแล้ว คุณจะเห็นเอาต์พุตที่คล้ายกับเอาต์พุตที่แสดงด้านล่าง

Note: Your Pod address range (`--cluster-ipv4-cidr`) can accommodate at most 1008 node(s).
Creating cluster my-gke-cluster in us-central1-a... Cluster is being health-checked (Kubernetes Control Plane is healthy)...done.                                                                                                             
Created [https://container.googleapis.com/v1/projects/YOUR_PROJECT_ID/zones/us-central1-a/clusters/my-gke-cluster].
To inspect the contents of your cluster, go to: https://console.cloud.google.com/kubernetes/workload_/gcloud/us-central1-a/my-gke-cluster?project=YOUR_PROJECT_ID
kubeconfig entry generated for my-gke-cluster.
NAME: my-gke-cluster
LOCATION: us-central1-a
MASTER_VERSION: 1.33.4-gke.1350000
MASTER_IP: 34.59.221.183
MACHINE_TYPE: e2-standard-4
NODE_VERSION: 1.33.4-gke.1350000
NUM_NODES: 2
STATUS: RUNNING
STACK_TYPE: IPV4

ยืนยันรายละเอียดคลัสเตอร์ GKE

ก่อนอื่น ให้เราดึงข้อมูลเข้าสู่ระบบของคลัสเตอร์

gcloud container clusters get-credentials my-gke-cluster \
                 --zone us-central1-a

คุณควรเห็นเอาต์พุตดังที่แสดงด้านล่าง

Fetching cluster endpoint and auth data.
kubeconfig entry generated for my-gke-cluster.

ถัดไป มายืนยันรายละเอียดคลัสเตอร์กัน

kubectl get nodes

คุณควรเห็นเอาต์พุตที่มีลักษณะดังนี้

NAME                                            STATUS   ROLES    AGE     VERSION
gke-my-gke-cluster-default-pool-c63d5936-2f1z   Ready    <none>   2m58s   v1.33.4-gke.1350000
gke-my-gke-cluster-default-pool-c63d5936-fqtl   Ready    <none>   3m2s    v1.33.4-gke.1350000

สุดท้าย ให้ตรวจสอบเนมสเปซของคลัสเตอร์

kubectl get namespaces

คุณควรเห็นเอาต์พุตที่มีลักษณะดังนี้

NAME                          STATUS   AGE
default                       Active   6m16s
gke-managed-cim               Active   4m21s
gke-managed-system            Active   4m6s
gke-managed-volumepopulator   Active   4m
gmp-public                    Active   3m40s
gmp-system                    Active   3m41s
kube-node-lease               Active   6m16s
kube-public                   Active   6m16s
kube-system                   Active   6m16s

4. ติดตั้ง kubectl-ai CLI

เราจะใช้วิธีการติดตั้ง kubectl-ai CLI แบบด่วน (แนะนำ)

ป้อนคำสั่งต่อไปนี้ใน Cloud Shell

curl -sSL https://raw.githubusercontent.com/GoogleCloudPlatform/kubectl-ai/main/install.sh | bash

การดำเนินการนี้จะดาวน์โหลดและติดตั้ง kubectl-ai CLI และคุณควรเห็นข้อความที่ส่วนท้ายซึ่งระบุว่า

✅ kubectl-ai installed successfully! Run 'kubectl-ai --help' to get started.

เราสามารถตรวจสอบว่าคำสั่ง kubectl-ai ทำงานหรือไม่โดยเรียกใช้คำสั่งต่อไปนี้

kubectl-ai

หมายเหตุ: คำสั่งข้างต้นจะแสดงข้อผิดพลาดที่ระบุว่า

creating llm client: GEMINI_API_KEY environment variable not set

โปรดทราบว่า kubectl-ai รองรับโมเดล AI จาก gemini, vertexai, azopenai, openai, grok, bedrock และผู้ให้บริการ LLM ในพื้นที่ เช่น ollama และ llama.cpp ในกรณีของเรา เราจะใช้ Gemini (Google) และจะต้องรับคีย์ API สำหรับ Gemini ผ่าน Google AI Studio เมื่อสร้างคีย์และเตรียมค่าไว้แล้ว ให้ใช้คำสั่งต่อไปนี้ใน Cloud Shell เพื่อตั้งค่าตัวแปรสภาพแวดล้อม GEMINI_API_KEY ที่ชี้ไปยังคีย์ของคุณ

export GEMINI_API_KEY="YOUR_GEMINI_API_KEY"

หมายเหตุ: ใช้ "GEMINI_API_KEY" เป็นค่าคีย์เท่านั้น

เปิดใช้ kubectl-ai อีกครั้ง คราวนี้คุณจะเห็นว่าแอปเปิดขึ้นและรอคำสั่งของคุณในเทอร์มินัลแบบอินเทอร์แอกทีฟ

$ kubectl-ai

  Hey there, what can I help you with today?                                  

>>>  

ลองใช้คำค้นหา 2-3 รายการที่เกี่ยวข้องกับคำสั่ง kubectl ในพรอมต์ ตัวอย่างบางส่วนมีดังนี้

  • What is the command to get the nodes in a cluster?
  • list pods

คุณออกจากเทอร์มินัล kubectl-ai ได้โดยพิมพ์ quit

5. การใช้ kubectl-ai

เมื่อกำหนดค่า kubectl-ai เรียบร้อยแล้ว ประเด็นสำคัญที่ควรเน้นย้ำคือตอนนี้คุณสามารถโต้ตอบกับคลัสเตอร์ได้โดยใช้คำค้นหาที่เป็นภาษาธรรมชาติ ลองใช้คำสั่งอื่นๆ กัน

มาเรียกใช้คำสั่งต่อไปนี้กัน

kubectl-ai --model gemini-2.5-flash "list pods in default namespace"

ซึ่งจะสร้างเอาต์พุตต่อไปนี้

Running: kubectl get pods -n default

There are no resources found in the default namespace.      

>>>

สังเกตว่าคำสั่ง kubectl ที่เทียบเท่ากันจะแปลคำค้นหาภาษาธรรมชาติของเราเพื่อแสดงรายการพ็อดได้อย่างไร

นอกจากนี้ โปรดทราบว่าตอนนี้เราอยู่ในkubectl-aiเทอร์มินัลแบบอินเทอร์แอกทีฟ (>>>) ซึ่งเราจะโต้ตอบกับเทอร์มินัลนี้ต่อไปได้

ป้อนคำสั่งต่อไปนี้

how many pods are there in kube-system namespace

เอาต์พุตจะแสดงดังนี้

>>> how many pods are there in kube-system namespace

Running: kubectl get pods -n kube-system --output=jsonpath='{.items[*].metadata.name}'

There are 18 pods in the kube-system namespace.

คำสั่งยิงนัดเดียว

ส่วนก่อนหน้าแสดงวิธีเปิดใช้ kubectl-ai และอยู่ในเทอร์มินัลแบบอินเทอร์แอกทีฟเพื่อป้อนคำสั่งถัดไป ซึ่งไม่เหมาะกับคำสั่งที่คุณต้องการเรียกใช้โดยอัตโนมัติและไม่ต้องรอข้อความแจ้งแบบอินเทอร์แอกทีฟเพื่อรับคำสั่งถัดไปจากคุณ

ป้อนวิธีการคำสั่งแบบช็อตเดียวด้วยพารามิเตอร์ --quiet

นี่คือตัวอย่างคำสั่งในการสร้างการทำให้ใช้งานได้

kubectl-ai --quiet "create a deployment named nginx with 2 replicas" --skip-permissions

ซึ่งจะส่งผลให้มีการเรียกใช้คำสั่ง create deployment ดังที่แสดงด้านล่าง

Running: kubectl create deployment nginx --image=nginx --replicas=2

I have created a deployment named nginx with 2 replicas. You can verify this by running kubectl get deployments .

ด้วยวิธีนี้ เราจึงตั้งค่า kubectl-ai ให้โต้ตอบกับคลัสเตอร์ GKE ปัจจุบันได้

เราเพิ่งเรียกใช้คำสั่ง 2-3 คำสั่งและแสดงโหมดการทำงานกับ kubectl-ai คุณสามารถส่งเอาต์พุตไปยังเครื่องมืออื่นๆ ทำความเข้าใจข้อผิดพลาด ความต่อเนื่องระหว่างการเรียกใช้เซสชันต่างๆ ของ kubectl-ai และอื่นๆ โปรดดูส่วนการใช้งานในเอกสารประกอบของเครื่องมือ

6. (ไม่บังคับ) อินเทอร์เฟซแชทของ kubectl-ai

ในบางสถานการณ์ คุณอาจต้องการทำงานกับ kubectl-ai ผ่านอินเทอร์เฟซ Chat มาตรฐาน Kubectl-ai มาพร้อมกับอินเทอร์เฟซ UI ของตัวเองซึ่งคุณเปิดใช้ได้ผ่านคำสั่งที่แสดงด้านล่างใน Cloud Shell

kubectl-ai --llm-provider=gemini \ --ui-type=web \ --ui-listen-address=0.0.0.0:8080

การดำเนินการนี้จะเปิดยูทิลิตีในอินเทอร์เฟซแชท และคุณควรเห็นเอาต์พุตที่คล้ายกับเอาต์พุตต่อไปนี้

listening on http://[::]:8080

คลิกตัวอย่างเว็บใน Cloud Shell ดังที่แสดงด้านล่าง

f990712162e8e924.png

จากนั้นคลิกแสดงตัวอย่างบนพอร์ต 8080 การดำเนินการนี้จะเปิดเบราว์เซอร์และทําให้อินเทอร์เฟซแชทบนเว็บพร้อมใช้งานดังที่แสดงด้านล่าง

90fce57ad7f16842.png

นี่คือตัวอย่างคำค้นหาที่เราดำเนินการในอินเทอร์เฟซแชท

6a304d227d3fa5a6.png

ลองใช้คำค้นหาอื่นๆ ในอินเทอร์เฟซนี้ นอกจากนี้ ยังให้คำแนะนำเกี่ยวกับคำค้นหาภาษาธรรมชาติอื่นๆ ที่คุณเรียกใช้ได้ด้วย

7. ล้างข้อมูล

คุณควรลบทรัพยากรที่เราสร้างขึ้นในเวิร์กช็อปนี้เพื่อหลีกเลี่ยงการเรียกเก็บเงินอย่างต่อเนื่องในบัญชี Google Cloud

หากไม่ต้องการคลัสเตอร์ GKE ที่เราสร้างไว้ในส่วนก่อนหน้าของแล็บนี้ คุณสามารถลบคลัสเตอร์ดังกล่าวได้โดยใช้คำสั่งต่อไปนี้

gcloud container clusters delete my-gke-cluster --zone=us-central1-a

8. ขอแสดงความยินดี

ขอแสดงความยินดี คุณใช้ kubectl-ai ซึ่งเป็นผู้ช่วย Kubernetes ที่ทำงานด้วยระบบ AI เพื่อจัดการคลัสเตอร์ Kubernetes ผ่านคำค้นหาภาษาธรรมชาติได้สำเร็จแล้ว ดูข้อมูลเพิ่มเติมได้ที่แหล่งข้อมูลที่ระบุไว้ในส่วนถัดไป

9. แหล่งข้อมูล