DEV Community

Tossapol Ritcharoenwattu
Tossapol Ritcharoenwattu

Posted on

Kubernetes Workshop1 : Step5 : การจัดการ replicaset

ตัวอย่างไฟล์ yaml ของ replicaset

apiVersion: apps/v1
kind: ReplicaSet
metadata:
  name: myapp-replicaset
  labels:
    app: myapp
    type: front-end
spec:
  replicas: 3
  selector:
    matchLabels:
      type: front-end
  template:
    metadata:
      name: myapp-pod
      labels:
        app: myapp
        type: front-end 
    spec:
      containers:
      - name: nginx-container
        image: nginx
Enter fullscreen mode Exit fullscreen mode

จะมีโครงสร้างอยู่ 4 ส่วนหลักเหมือน pod คือ apiVersion, kind, metadata, spec แต่จะมีส่วนที่แตกต่างกันดังนี้

  • appVersion ตรงนี้ ค่าที่ใส่จะต้องมี apps/ นำหน้าเสมอ เช่น apps/v1
  • tag ที่อยู่ภายใต้ template เขียนเหมือนเวลาเราเขียน metadata ของ pod ที่ต้องการได้เลย
  • replicas ตรงนี้เป็นการกำหนดค่า default จำนวน pod ว่าต้องการให้มีเท่าไหร่
  • selector ตรงนี้ต้องมี เพราะ replicaset สามารถเลือกกลุ่มที่ต้องการจั้ดการได้ เช่นในตัวอย่าง matchLabels = "type: front-end" replicaset จะเลือกเฉพาะที่มีการกำหนด label เป็นค่านี้เท่านั้น
  1. สร้าง Replicaset เราสามารถสร้าง replicaset ด้วย command
kubectl apply -f replicaset-definition.yaml
Enter fullscreen mode Exit fullscreen mode


ลองเช็คดูว่ามี pod ถูกสร้างขึ้นมา 3 pods จริงหรือไม่

  1. ทดลองลบ pod ออก 1 ตัว แล้วเช็คดูใหม่ว่า ยังมี 3 pods เท่ากับที่กำหนดไว้ใน replacaset หรือไม่

    จะเห็นได้ว่าถึงจะลบ pod ออกไป แต่พอ เช็คดูใหม่ ก็ยังมี 3 pods เท่าเดิม

  2. ทดลองเพิ่มจำนวน pods ขึ้นเป็น 5

  3. โดยแก้ yaml file

    สั่ง kubectl apply -f replicaset-definition.yaml

    จะเห็นว่า เราสามารถเพิ่มจำนวน pod เป็น 5 pods ได้

  4. ไม่แก้ yaml เราสามารถสั่งผ่าน command line โดยอ้างอิง ชื่อไฟล์ หรือ ชื่อ replicaset ได้เลย

kubectl scale --replicas=4 -f replicaset-definition.yaml
Enter fullscreen mode Exit fullscreen mode


kubectl scale --replicas=3 replicaset  myapp-replicaset
Enter fullscreen mode Exit fullscreen mode

  1. เรียกดูว่าใน cluster มี replicaset ใด ทำงานอยู่บ้าง
kubectl get replicaset
Enter fullscreen mode Exit fullscreen mode

  1. ดูรายละเอียดของ replicaset
kubectl describe replicaset myapp-replicaset
Enter fullscreen mode Exit fullscreen mode

  1. ลบ replicaset
kubectl delete replicaset myapp-replicaset
Enter fullscreen mode Exit fullscreen mode


จะเห็นว่า เมื่อลบ replicaset แล้ว pod ที่ถูกสร้างจาก replicaset นั้นจะถูกลบออกไปด้วย

Top comments (0)