ตั้งค่า kubectl และ kubeconfig เพื่อจัดการ K8s Cluster จากเครื่อง Local

kubectl เป็นเครื่องมือที่สำคัญสำหรับการจัดการ Kubernetes Cluster โดยอนุญาตให้คุณควบคุมและตรวจสอบ Kubernetes Cluster จากเครื่อง Local ของคุณ ไฟล์ kubeconfig คือไฟล์ที่ประกอบด้วยข้อมูลการเข้าถึง (credentials, endpoints) สำหรับเชื่อมต่อกับ Kubernetes Cluster บทความนี้จะแนะนำวิธีตั้งค่า kubectl และ kubeconfig เพื่อให้คุณสามารถจัดการ Kubernetes Cluster ที่อยู่บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ได้จากเครื่อง Local ของคุณ

kubectl คืออะไร

kubectl (Kubernetes Command Line Tool) เป็นเครื่องมือ Command Line ที่ใช้สำหรับการจัดการและการควบคุม Kubernetes Cluster ด้วย kubectl คุณสามารถ:

  • ปรับใช้ (deploy) แอปพลิเคชันไปยัง Kubernetes Cluster
  • ตรวจสอบและจัดการ resources (Pods, Services, Deployments)
  • ดูไฟล์ logs ของ Pod
  • เข้าถึง Pod ด้วย interactive shell
  • สร้างและอัปเดต resources ผ่าน YAML manifests

kubeconfig คืออะไร

kubeconfig คือไฟล์ YAML ที่ประกอบด้วยข้อมูลการเข้าถึง Kubernetes Cluster โดยมี 3 ส่วนหลัก:

  • Clusters: ข้อมูลเซิร์ฟเวอร์ Kubernetes (URL, CA certificate)
  • Users: ข้อมูลการเข้าถึง (certificates, tokens)
  • Contexts: การรวมกันระหว่าง cluster และ user

ติดตั้งบน macOS

brew install kubectl

ติดตั้งบน Linux (Ubuntu/Debian)

curl -LO "https://dl.k8s.io/release/$(curl -L -s https://dl.k8s.io/release/stable.txt)/bin/linux/amd64/kubectl"
chmod +x kubectl
sudo mv kubectl /usr/local/bin/

ติดตั้งบน Windows

ดาวน์โหลด kubectl.exe จากหน้า releases ของ Kubernetes หรือใช้ Chocolatey:

choco install kubernetes-cli

ขั้นตอนที่ 2: ตรวจสอบการติดตั้ง kubectl

kubectl version --client

ขั้นตอนที่ 3: รับไฟล์ kubeconfig จาก Kubernetes Cluster

เข้าถึง Cloud VPS ที่มี Kubernetes Cluster โดยใช้ SSH:

ssh root@YOUR_CLOUD_VPS_IP

ดูไฟล์ kubeconfig ที่สร้างขึ้นระหว่างการติดตั้ง Kubernetes:

cat ~/.kube/config

คัดลอกผลลัพธ์ทั้งหมด (หรือใช้ scp เพื่อดาวน์โหลดไฟล์โดยตรง):

scp root@YOUR_CLOUD_VPS_IP:~/.kube/config ./kubeconfig

ขั้นตอนที่ 4: ตั้งค่า kubeconfig บนเครื่อง Local

สร้างไดเรกทอรี .kube สำหรับ kubeconfig (ถ้ายังไม่มี):

mkdir -p ~/.kube

วางไฟล์ kubeconfig ในไดเรกทอรี ~/.kube:

mv kubeconfig ~/.kube/config

ตั้งค่าสิทธิ์ของไฟล์:

chmod 600 ~/.kube/config

ขั้นตอนที่ 5: ทดสอบการเชื่อมต่อ

ตรวจสอบว่า kubectl สามารถเชื่อมต่อกับ Cluster ได้:

kubectl cluster-info

ดูรายชื่อ Nodes ในคลัสเตอร์:

kubectl get nodes

การจัดการ kubeconfig หลาย Clusters

หากคุณจัดการ Kubernetes Clusters หลายตัว คุณสามารถสร้าง kubeconfig หลายตัวและรวมเข้าด้วยกัน:

วิธีที่ 1: ใช้ KUBECONFIG Environment Variable

export KUBECONFIG=~/.kube/config1:~/.kube/config2:~/.kube/config3

วิธีที่ 2: รวม kubeconfig Manually

แก้ไขไฟล์ ~/.kube/config และเพิ่มข้อมูล clusters, users, และ contexts จากไฟล์ kubeconfig อื่นๆ

คำสั่ง kubectl ที่มีประโยชน์

เมื่อตั้งค่า kubectl เสร็จแล้ว คุณสามารถใช้คำสั่งต่อไปนี้:

kubectl get pods                          # ดู Pods
kubectl get svc                           # ดู Services
kubectl get deployments                   # ดู Deployments
kubectl describe pod            # ดูรายละเอียด Pod
kubectl logs                    # ดู logs ของ Pod
kubectl exec -it  -- /bin/bash  # เข้าถึง Pod
kubectl apply -f               # สร้าง/อัปเดต resources
kubectl delete pod              # ลบ Pod

การแก้ไขปัญหา

หากพบปัญหาในการเชื่อมต่อ:

  • Unable to connect: ตรวจสอบ API Server URL ใน kubeconfig
  • Permission denied: ตรวจสอบ certificates และ credentials ใน kubeconfig
  • Connection refused: ตรวจสอบว่า Kubernetes API Server กำลังทำงานบน Cloud VPS

สรุป

การตั้งค่า kubectl และ kubeconfig นั้นไม่ยุ่งยาก เมื่อตั้งค่าเสร็จแล้ว คุณสามารถจัดการ Kubernetes Cluster บน Cloud VPS ของ ผู้ให้บริการโฮสติ้ง ได้อย่างสะดวก จากเครื่อง Local ของคุณเองโดยไม่ต้องเข้าถึง Cloud VPS โดยตรง