[บันทึกกันลืม] วิธีกำหนดให้ pod สร้างเฉพาะบน node ที่ต้องการ

Kubernetes cluster สามารถกระจายตัวไปในหลาย ๆ ดาต้าเซนเตอร์ได้ แต่ในบางงาน เช่น การใช้ Airflow ในการเข้าถึงข้อมูลบนระบบฐานข้อมูล ซึ่งจำกัดการเข้าถึงได้เฉพาะจากบาง IP range เท่านั้น สามารถทำได้โดยการกำหนด ‘label’ ให้ nodes ที่ต้องการ และ nodeSelector ของ pods หรือ resources

วิธีกำหนด label ให้ node

ใช้คำสั่งต่อไปนี้ เพื่อ label ว่า ‘database-access=true’ ให้ node ชื่อ ‘dc1node1’ ซึ่งเป็น node ที่สามารถเข้าถึงฐานข้อมูลได้

kubectl label node/dc1node1 database-access=true

วิธีระบุ Pod/Resource ให้เลือก node ที่ต้องการ

ใช้คำสั่งเพื่อ edit เช่น

kubectl edit statefulset.apps/airflow-worker -n airflow

จากนั้นเลื่อนไปที่

spec: containers: initContainers: nodeSelector:

ตั้งค่า

database-access: "true"

เมื่อทำมีการ reschedule ก็จะไปใช้ node ที่มี label ตามที่กำหนด

หวังว่าจะมีประโยชน์ครับ