Skip to main content

ReplicaSets

ReplicaSet เป็น Kubernetes Resource ที่ใช้เพื่อให้แน่ใจว่ามีจำนวน Replica ของ Pods ที่ต้องการทำงานอยู่เสมอ หากมี Pod ใดหยุดทำงาน ReplicaSet จะสร้าง Pod ใหม่เพื่อทดแทนทันที

คุณสมบัติของ ReplicaSets

  1. การรักษาจำนวน Pods

    • รักษาจำนวน Pods ให้ตรงกับที่กำหนดใน replicas เสมอ
  2. การคัดเลือก Pods ด้วย Label Selector

    • กำหนด Pods ที่จะจัดการผ่าน Label Selector
  3. การทำงานร่วมกับ 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

  1. Selector Matching

    • ReplicaSet ใช้ Label Selector เพื่อระบุ Pods ที่ต้องจัดการ หากมี Pods ที่ตรงกับ Selector แต่ไม่ได้ถูกสร้างโดย ReplicaSet ระบบจะยังคงจัดการ Pods เหล่านั้น
  2. Pod Replacement

    • หาก Pod ใดหยุดทำงาน ReplicaSet จะสร้าง Pod ใหม่โดยใช้ Pod Template ที่กำหนดไว้
  3. การทำงานร่วมกับ Deployments

    • Deployments ใช้ ReplicaSet เพื่อจัดการจำนวน Pods และทำการ Rolling Update

ข้อควรรู้เกี่ยวกับ ReplicaSet

  1. ไม่ควรใช้งาน ReplicaSet เดี่ยว ๆ

    • ควรใช้ Deployment เป็นตัวจัดการ ReplicaSet เพื่อความยืดหยุ่นและฟีเจอร์เพิ่มเติม เช่น Rollback และ Rolling Update
  2. ใช้ Label Selector อย่างระมัดระวัง

    • การกำหนด Label Selector ที่กว้างเกินไปอาจทำให้ ReplicaSet จัดการ Pods ที่ไม่เกี่ยวข้อง

ReplicaSet เป็นส่วนสำคัญของ Kubernetes ที่ช่วยรักษาความเสถียรของแอปพลิเคชัน โดยการจัดการ Pods อย่างอัตโนมัติ แต่การใช้งานมักจะถูกควบคุมผ่าน Deployment เพื่อประสิทธิภาพและความง่ายในการจัดการระบบ