| คลัสเตอร์และ context |
|---|
| แสดงว่า control plane และ service หลักทำงานอยู่ที่ไหน | kubectl cluster-info |
| แสดงรายการ cluster และ namespace ที่คุณสลับไปมาได้ | kubectl config get-contexts |
| สลับไปยัง context ของ cluster หรือ namespace อื่น | kubectl config use-context my-prod |
| ตั้ง default namespace ของ context ปัจจุบัน | kubectl config set-context --current --namespace=staging |
| เปลี่ยนชื่อ context ที่บันทึกไว้ใน kubeconfig ของคุณ | kubectl config rename-context old-name prod |
| แสดงรายการประเภท resource ทั้งหมดที่ cluster รู้จัก | kubectl api-resources |
| พิมพ์เวอร์ชัน Kubernetes ของ client และ server | kubectl version |
| แสดง field ที่ resource รองรับ อ่านมาจาก API schema | kubectl explain pod.spec.containers |
| ตรวจสอบว่าผู้ใช้ปัจจุบันได้รับอนุญาตให้ทำ action นั้นหรือไม่ | kubectl auth can-i delete pods |
| ตรวจสอบเวิร์กโหลด |
|---|
| แสดงรายการ pod พร้อมสถานะ เพิ่ม -o wide เพื่อดู node และ IP | kubectl get pods -A |
| แสดง resource ทั่วไปของ namespace ในครั้งเดียว | kubectl get all |
| เพิ่มคอลัมน์ node และ IP ให้คำสั่ง get ใดก็ได้ | kubectl get pods -o wide |
| พิมพ์ resource ออกมาเป็น YAML manifest ฉบับเต็มที่อยู่เบื้องหลัง | kubectl get deploy/web -o yaml |
| แสดงรายการ deployment และจำนวน replica ที่พร้อมใช้ | kubectl get deployments |
| แสดงรายการ statefulset และ replica ที่พร้อมใช้ | kubectl get statefulsets |
| แสดงรายการ job แบบ batch และ cronjob ที่ตั้งเวลาไว้ | kubectl get jobs,cronjobs |
| แสดง event, label และสถานะของ pod หนึ่งตัว | kubectl describe pod web-abc |
| แสดงความจุ เงื่อนไข และ pod ที่กำลังทำงานของ node | kubectl describe node node-1 |
| พิมพ์ stdout ของ pod; ใช้ -f เพื่อติดตาม, --previous สำหรับการ crash ครั้งล่าสุด | kubectl logs -f web-abc |
| รันคำสั่งภายใน pod ที่กำลังทำงาน | kubectl exec -it web-abc -- sh |
| ดู CPU และหน่วยความจำแบบสดของ pod หรือ node (ต้องมี metrics-server) | kubectl top pods |
| แสดงรายการ event ล่าสุด เช่น pull ล้มเหลวและ backoff | kubectl get events -A --sort-by=.lastTimestamp |
| แสดงรายการ ingress rule พร้อมที่อยู่ load balancer | kubectl get ingress |
| คัดลอกไฟล์ระหว่างเครื่องของคุณกับ pod ที่กำลังทำงาน | kubectl cp web-abc:/var/log/app.log ./app.log |
| บล็อกรอจนกว่า resource จะตรงตามเงื่อนไข | kubectl wait --for=condition=ready pod -l app=web |
| เริ่ม pod ใช้ครั้งเดียวจาก image โดยไม่ต้องมี manifest | kubectl run debug --rm -it --image=busybox -- sh |
| Apply, scale และ rollout |
|---|
| แสดงว่า apply จะเปลี่ยนอะไรบ้าง โดยไม่เปลี่ยนจริง | kubectl diff -f deploy.yaml |
| สร้างหรืออัปเดต resource จากไฟล์ manifest | kubectl apply -f deploy.yaml |
| apply manifest และลบ object ที่ไม่อยู่ในนั้นแล้ว | kubectl apply -f dir/ --prune -l app=web |
| เปิด resource ที่ทำงานอยู่ใน editor แล้ว apply เมื่อบันทึก | kubectl edit deploy/web |
| แก้ไขบาง field ของ resource ที่ทำงานอยู่ | kubectl patch deploy/web --patch-file fix.json |
| ชี้ container ของ deployment ไปที่ image ใหม่ | kubectl set image deploy/web web=nginx:1.27 |
| แทนที่ object โดยลบแล้วสร้างใหม่เมื่อจำเป็น | kubectl replace --force -f deploy.yaml |
| ลบ resource ที่ประกาศไว้ในไฟล์ manifest | kubectl delete -f deploy.yaml |
| เปลี่ยนจำนวน replica ของ deployment | kubectl scale deploy/web --replicas=4 |
| เฝ้าดู rollout จนเสร็จสมบูรณ์หรือล้มเหลว | kubectl rollout status deploy/web |
| แสดงรายการ revision ที่ rollout ผ่านมา | kubectl rollout history deploy/web |
| รีสตาร์ท pod ทุกตัวของ deployment ทีละตัว | kubectl rollout restart deploy/web |
| ย้อน deployment กลับไป revision ก่อนหน้า | kubectl rollout undo deploy/web |
| เซอร์วิสและเครือข่าย |
|---|
| แสดงรายการ service พร้อมชนิดและ cluster IP | kubectl get svc |
| แสดงว่า pod IP ใดกำลังรองรับแต่ละ service อยู่ | kubectl get endpoints web |
| สร้าง service ที่อยู่หน้าชุด pod; --type=NodePort หรือ LoadBalancer เข้าถึงได้จากนอก cluster | kubectl expose deploy/web --port=80 |
| แสดงที่อยู่ load balancer เบื้องหลังแต่ละ ingress (alpha) | kubectl ingress status -A |
| แสดงรายการ policy ที่จำกัดการรับส่งข้อมูลของ pod | kubectl get networkpolicies |
| ทำ tunnel จากพอร์ตในเครื่องไปยัง pod หรือ service | kubectl port-forward svc/web 8080:80 |
| โหนดและการดูแลรักษา |
|---|
| แสดงรายการ node ของ cluster พร้อมสถานะ | kubectl get nodes -o wide |
| ทำเครื่องหมายว่า node ไม่รับ pod ใหม่ | kubectl cordon node-1 |
| ทำเครื่องหมายให้ node รับ pod ได้กลับมาอีกครั้ง | kubectl uncordon node-1 |
| ไล่ pod ออกจาก node และทำเครื่องหมายว่าไม่รับ pod ใหม่ | kubectl drain node-1 --ignore-daemonsets |
| เพิ่มหรือลบ taint ที่ทำให้ pod เลี่ยง node | kubectl taint node node-1 key=value:NoSchedule |
| ลบ pod ที่ค้างทันที โดยข้ามการปิดแบบ graceful | kubectl delete pod web-abc --grace-period=0 --force |
| อ็อบเจกต์และคอนฟิก |
|---|
| สร้าง namespace ใหม่เพื่อกำหนดขอบเขตของ resource | kubectl create namespace staging |
| แสดงรายการ namespace พร้อมสถานะ | kubectl get namespaces |
| เก็บคีย์หรือไฟล์คอนฟิกเป็น object ใน cluster | kubectl create configmap app --from-file=config.yaml |
| แสดงรายการ configmap ใน namespace | kubectl get configmaps |
| เก็บรหัสผ่านหรือ certificate เป็น secret | kubectl create secret generic db --from-literal=password=s3cret |
| แสดงรายการ secret ใน namespace | kubectl get secrets |
| เพิ่มหรือลบ label บน resource | kubectl label pod web-abc tier=backend |
| เพิ่ม metadata ที่ selector จับคู่ไม่ได้ | kubectl annotate deploy/web release=july |