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 ตามที่กำหนด
หวังว่าจะมีประโยชน์ครับ