เรื่องมีอยู่ว่า…
เวลาใช้คำสั่ง kubectl มันมักจะเป็นคำสั่งแบบ 1 ต่อ 1 ตัวอย่าง เช่น
- kubectl logs pod ….
- kubectl delete pod …
- kubectl exec -it …
- อื่นๆ ที่ไม่ใช่ kubectl ก็มี
ปัญหาของผมคือ เวลาเรา delete pod มันจะสร้าง pod ใหม่ที่เป็น random name ให้เรา
ทีนี้เวลาเราจะ logs pod นั้นก็ต้อง get pods ก่อน เพื่อหาชื่อ แล้วค่อย logs ซึ่งมันเสียเวลามากอะ ต้อง copy paste copy paste
ตัวอย่าง ความยุ่งยาก 555
- kubectl get pods
สมมติได้ชื่อ cs02-confirm-sender-dev-kbank-686df864b4-k52fd - kubectl delete pod cs02-confirm-sender-dev-kbank-686df864b4-k52fd
- kubectl get pods
สมมติได้ชื่อ cs02-confirm-sender-dev-bbl-7f459b9444-7k6w6 - kubectl logs cs02-confirm-sender-dev-bbl-7f459b9444-7k6w6
ดูสิๆ มันยาวไป ลองทำสั้นๆดูนะ
[code lang="bash"]kubectl delete pod (kubectl get pods | grep "cs02" | awk '{print $1}' | head -n 1) kubectl logs (kubectl get pods | grep "cs02" | awk '{print $1}' | head -n 1)[/code]
วิธีคือ อ่านจากใจวงเล็บก่อน จากนั้นอ่านจากซ้ายไปขวา เช่น
kubectl get pods | grep “cs02” คือ | grep ชื่อที่เราต้องการ
จากนั้น awk ‘{print $1}’ คือ เอาแค่ตัวแรกสุด
head -n 1 คือ เอาตัวบนสุดจ้า