ReplicaSets
ReplicaSet เป็น Kubernetes Resource ที่ใช้เพื่อให้แน่ใจว่ามีจำนวน Replica ของ Pods ที่ต้องการทำงานอยู่เสมอ หากมี Pod ใดหยุดทำงาน ReplicaSet จะสร้าง Pod ใหม่เพื่อทดแทนทันที
คุณสมบัติของ ReplicaSets
-
การรักษาจำนวน Pods
- รักษาจำนวน Pods ให้ตรงกับที่กำหนดใน
replicasเสมอ
- รักษาจำนวน Pods ให้ตรงกับที่กำหนดใน
-
การคัดเลือก Pods ด้วย Label Selector
- กำหนด Pods ที่จะจัดการผ่าน Label Selector
-
การทำงานร่วมกับ Deployments
- ReplicaSet มักถูกสร้างและจัดการโดย Deployment
ตัวอย่างการสร้าง ReplicaSet
ไฟล์ YAML ตัวอย่าง
apiVersion: apps/v1
kind: ReplicaSet
metadata:
name: my-replicaset
labels:
app: my-app
spec:
replicas: 3
selector:
matchLabels:
app: my-app
template:
metadata:
labels:
app: my-app
spec:
containers:
- name: my-container
image: nginx:1.21
ports:
- containerPort: 80
การสร้าง ReplicaSet
ใช้คำสั่ง kubectl apply เพื่อสร้าง ReplicaSet:
kubectl apply -f my-replicaset.yaml
การจัดการ ReplicaSet
ตรวจสอบสถานะของ ReplicaSet
-
ดูรายการ ReplicaSet ทั้งหมด
kubectl get replicasets -
ดูรายละเอียดของ ReplicaSet
kubectl describe replicaset <replicaset-name>
ปรับจำนวน Replica
สามารถปรับจำนวน Replica ของ Pods ได้โดยใช้คำสั่ง:
kubectl scale replicaset <replicaset-name> --replicas=<number>
ตัวอย่าง:
kubectl scale replicaset my-replicaset --replicas=5
การลบ ReplicaSet
การลบ ReplicaSet จะทำให้ Pods ที่เกี่ยวข้องถูกลบไปด้วย:
kubectl delete replicaset <replicaset-name>
การทำงานของ ReplicaSet
-
Selector Matching
- ReplicaSet ใช้ Label Selector เพื่อระบุ Pods ที่ต้องจัดการ หากมี Pods ที่ตรงกับ Selector แต่ไม่ได้ถูกสร้างโดย ReplicaSet ระบบจะยังคงจัดการ Pods เหล่านั้น
-
Pod Replacement
- หาก Pod ใดหยุดทำงาน ReplicaSet จะสร้าง Pod ใหม่โดยใช้
Pod Templateที่กำหนดไว้
- หาก Pod ใดหยุดทำงาน ReplicaSet จะสร้าง Pod ใหม่โดยใช้
-
การทำงานร่วมกับ Deployments
- Deployments ใช้ ReplicaSet เพื่อจัดการจำนวน Pods และทำการ Rolling Update
ข้อควรรู้เกี่ยวกับ ReplicaSet
-
ไม่ควรใช้งาน ReplicaSet เดี่ยว ๆ
- ควรใช้ Deployment เป็นตัวจัดการ ReplicaSet เพื่อความยืดหยุ่นและฟีเจอร์เพิ่มเติม เช่น Rollback และ Rolling Update
-
ใช้ Label Selector อย่างระมัดระวัง
- การกำหนด Label Selector ที่กว้างเกินไปอาจทำให้ ReplicaSet จัดการ Pods ที่ไม่เกี่ยวข้อง
ReplicaSet เป็นส่วนสำคัญของ Kubernetes ที่ช่วยรักษาความเสถียรของแอปพลิเคชัน โดยการจัดการ Pods อย่างอัตโนมัติ แต่การใช้งานมักจะถูกควบคุมผ่าน Deployment เพื่อประสิทธิภาพและความง่ายในการจัดการระบบ