วิธีการปรับใช้แอปพลิเคชันใน Kubernetes

Kubernetes เป็นหนึ่งในแพลตฟอร์มอัตโนมัติที่ได้รับความนิยมมากที่สุดสำหรับการปรับใช้ ปรับขนาด และใช้งานคอนเทนเนอร์แอปพลิเคชันบนคลัสเตอร์ของโฮสต์หรือโหนด

บทความนี้จะกล่าวถึงหนึ่งในออบเจ็กต์กลางใน Kubernetes: การปรับใช้ เป้าหมายคือการทำความเข้าใจพฤติกรรมและวิธีการสร้าง อัปเดต และลบ

การปรับใช้คืออะไร?

การปรับใช้เป็นหนึ่งในอ็อบเจ็กต์ที่ใช้ในการเปิดพ็อด แนวทางปฏิบัติที่ดีที่สุดของ Kubernetes สนับสนุนการใช้การปรับใช้สำหรับแอปพลิเคชันไร้สัญชาติ หากไม่มีการทำให้ใช้งานได้ คุณจะต้องสร้าง อัปเดต และลบพ็อดหลายรายการด้วยตนเอง ซึ่งอาจทำให้น่าเบื่อและไม่สามารถทำได้สำหรับพ็อดจำนวนมาก

การปรับใช้จะประกาศออบเจ็กต์เดียวใน YAML ซึ่งไม่เพียงแต่สร้างพ็อดเท่านั้น แต่ยังช่วยให้มั่นใจว่าเป็นข้อมูลล่าสุดและทำงานอยู่ คุณยังสามารถปรับขนาดแอปพลิเคชันของคุณโดยอัตโนมัติได้อย่างง่ายดายโดยใช้การปรับใช้บน Kubernetes ดังนั้น การปรับใช้จะถูกใช้เพื่อปรับขนาด ปรับใช้ และย้อนกลับเวอร์ชันของแอปพลิเคชันของคุณในพ็อด

การปรับใช้ยังบอก Kubernetes ว่าเราต้องการเรียกใช้พ็อดกี่ชุด และ Kubernetes จะดูแลส่วนที่เหลือเอง คอนโทรลเลอร์ที่เกี่ยวข้องจะสร้าง ReplicaSet จากการกำหนดค่าของคุณเมื่อสร้างการปรับใช้ ตัวควบคุมที่เชื่อมโยงกับ ReplicaSet จะสร้างชุดของพ็อดจากการกำหนดค่า ReplicaSet

ข้อดีของการใช้การปรับใช้แทนการสร้าง ReplicaSet โดยตรงคือ:

  • การทำประวัติวัตถุ: การเปลี่ยนแปลงแต่ละรายการในวัตถุ (ผ่าน “ใช้” หรือ “แก้ไข”) จะสร้างข้อมูลสำรองของเวอร์ชันก่อนหน้า
  • การจัดการการเปิดตัวและการย้อนกลับ: คุณสามารถกลับไปใช้การกำหนดค่าที่เกี่ยวข้องกับจุดก่อนหน้าได้

การสร้างการทำให้ใช้งานได้

มีสองวิธีที่เราใช้เพื่อสร้างการปรับใช้ Kubernetes:

วิธีการบังคับ

Kubernetes API ช่วยให้เข้าถึงแนวทางที่ตรงและจำเป็นมากขึ้นโดยไม่ต้องมีไฟล์การกำหนดค่าหรือไฟล์ Manifest ที่จัดรูปแบบ YAML ในแนวทางนี้ สิ่งที่เราต้องทำคือพูดในสิ่งที่เราต้องการทำให้เสร็จ และ Kubernetes จะรับผิดชอบในการกำหนดสิ่งที่ต้องทำเพื่อให้ได้ผลลัพธ์ที่คาดหวัง

หากต้องการใช้วิธีบังคับ เพียงใช้คำสั่งด้านล่าง:

kubectl create deployment nginx-deployment --image nginx --port=80

วิธีการประกาศ

ในวิธีนี้ คุณต้องประกาศทุกอย่าง และเมื่อคุณใช้รหัสนี้ Kubernetes จะอ่านคำจำกัดความของคุณและสร้างตามที่แสดงหรือประกาศทุกประการ

  เหตุใดไอคอนแอป Mac บางตัวจึงถูกขีดฆ่า

หากต้องการใช้การทำให้ใช้งานได้แบบประกาศ คุณจะต้องสร้างไฟล์ YAML

ไฟล์ YAML สำหรับการปรับใช้ด้วยชื่อ new_deployment.yaml:

apiVersion: apps/v1
kind: Deployment
metadata:
  name: nginx-deployment
spec:
  #Specifies the number of Pod Copies
  replicas: 3
 #Selects the Pod to be managed by the deployment
  selector:
    #Matches the defined labels
    matchLabels:
      deploy: example
  template:
    metadata:
      #Specifies the labels on the Pod.
       labels:
         deploy: example
    spec:
      containers:
        - name: nginx
          image: nginx:1.20.2 

ในไฟล์ YAML นี้ หลังจากกำหนดเวอร์ชัน Kubernetes API แล้ว ประเภทของวัตถุที่คุณกำลังสร้าง และชื่อของการปรับใช้ จะมีส่วนข้อมูลจำเพาะ ในส่วนนี้ คุณต้องกำหนดคีย์เรพพลิกาก่อน ซึ่งระบุจำนวนอินสแตนซ์ Pod ที่การทำให้ใช้งานได้ต้องคงอยู่

ใช้ป้ายกำกับตัวเลือกเพื่อระบุพ็อดในการปรับใช้ สำหรับสิ่งนี้ คุณสามารถใช้ป้ายกำกับการทำให้ใช้งานได้ ซึ่งบอกว่าพ็อดทั้งหมดที่ตรงกับป้ายกำกับเหล่านี้ถูกจัดกลุ่มในการทำให้ใช้งานได้

หลังจากนั้น คุณมีอ็อบเจ็กต์เทมเพลตที่คุณมีโมเดล Pod ภายในข้อกำหนดการปรับใช้ของคุณ เมื่อการทำให้ใช้งานได้สร้างพ็อด ระบบจะสร้างพ็อดโดยใช้เทมเพลตนี้ สามารถดูข้อมูลจำเพาะของพ็อดปกติได้ภายใต้คีย์เทมเพลต

ด้วยการปรับใช้นี้ อิมเมจ Nginx ที่มีป้ายกำกับจะถูกปรับใช้กับพ็อด นอกจากนี้ คุณต้องระวังในประเด็นนี้ด้วย และพ็อดเป็นหน่วยความสามารถในการปรับขนาดใน Kubernetes ดังนั้นคุณต้องนึกถึงรูปแบบที่คุณต้องการใช้หากคุณใส่คอนเทนเนอร์หลายตัวในพ็อดเดียวกัน

ถัดไป ใช้ไฟล์ new_deployment.yaml Yaml ใช้คำสั่งต่อไปนี้:

kubectl apply -f new_deployment.yaml

หลังจากนั้นไม่กี่วินาที คุณจะได้รับสถานะการปรับใช้โดยใช้สิ่งต่อไปนี้:

kubectl get all

ดึงและอัปเดตการทำให้ใช้งานได้

โปรดทราบว่าคุณได้สร้างพ็อด การปรับใช้ และชุดจำลอง ดังนั้น การปรับใช้จะสร้างและจัดการ Replicaset เสมอ ตอนนี้คุณสามารถใช้คำสั่งต่อไปนี้เพื่ออธิบายการปรับใช้:

kubectl describe deployment nginx-deployment 

ตอนนี้คุณมีคำอธิบายทั้งหมดของการปรับใช้แล้ว โดยเน้นถึงกลยุทธ์ที่ใช้ในการสร้าง/สร้างพ็อดใหม่เมื่อมีการกำหนดการอัปเดตเป็น RollingUpdate

  วิธีเชื่อมต่อกับเซิร์ฟเวอร์ SFTP ใน Ubuntu

กลยุทธ์ RollingUpdate ช่วยให้สามารถโยกย้ายแอปพลิเคชันเวอร์ชันหนึ่งไปเป็นเวอร์ชันที่ใหม่กว่าได้อย่างเป็นระเบียบ เป็นกลยุทธ์เริ่มต้นที่ใช้ใน Kubernetes

นอกจากนี้ เรายังมีกลยุทธ์ดังต่อไปนี้:

  • สร้างใหม่: ยุติอินสแตนซ์ Pod ที่กำลังทำงานอยู่และ ‘สร้างใหม่’ ด้วยเวอร์ชันใหม่
  • สีน้ำเงิน/เขียว: กลยุทธ์นี้สร้างสภาพแวดล้อมที่แยกจากกันสองแบบแต่เหมือนกัน ในสภาพแวดล้อมสีน้ำเงิน แอปพลิเคชันกำลังทำงานตามที่เป็นอยู่ ในขณะที่ในสภาพแวดล้อมสีเขียว แอปพลิเคชันกำลังทำงานตามที่เป็นอยู่ในอนาคต
  • Canary: กลยุทธ์การปรับใช้ที่ผู้ใช้บางส่วนเกี่ยวข้องกับการเปิดตัวแอปพลิเคชันหรือบริการที่เพิ่มขึ้น

หากคุณเลือกใช้ “การอัปเดตต่อเนื่อง” คุณสามารถกำหนดค่าลักษณะการทำงานเกี่ยวกับจำนวนแบบจำลองที่ต้องการได้

  • maxSurge ช่วยให้คุณระบุได้ (เป็นเปอร์เซ็นต์หรือค่าสัมบูรณ์) จำนวนพ็อดที่สามารถสร้างได้ นอกเหนือจากจำนวนแบบจำลองที่กำหนดค่าไว้ในปัจจุบัน
  • maxUnavailable ช่วยให้คุณระบุได้ (เป็นเปอร์เซ็นต์หรือเงื่อนไขแบบสัมบูรณ์) จำนวนพ็อดที่สามารถ “ไม่พร้อมใช้งาน” ระหว่างการอัปเดต ขึ้นอยู่กับจำนวนของแบบจำลองที่กำหนดค่าไว้

การกำหนดค่าเหล่านี้จะช่วยให้คุณมั่นใจได้ถึง QoS หรือเร่งการปรับใช้ของคุณ ทั้งนี้ขึ้นอยู่กับแอปพลิเคชันและตัวปรับขนาดอัตโนมัติของคุณ

ถัดไป คุณต้องปรับขนาดพ็อดเป็น 10 และเปลี่ยนแท็กรูปภาพ Nginx เป็นเวอร์ชันล่าสุด

kubectl scale deployment nginx-deployment --replicas=10

โปรดทราบว่าเรามีการสร้างคอนเทนเนอร์ 5 รายการ และจาก 10 พ็อด เรามี 5 รายการ

หลังจากนั้นไม่กี่วินาที ให้ใช้คำสั่งต่อไปนี้:

kubectl get all

ที่นี่คุณจะเห็นว่าสร้างพ็อดทั้งหมดแล้ว และคอนเทนเนอร์กำลังทำงานอยู่

การลบการทำให้ใช้งานได้

หากต้องการลบการปรับใช้ Kubernetes คุณสามารถใช้คำสั่งต่อไปนี้:

kubectl delete deploy nginx-deployment 
kubectl delete deploy new_deployment.yaml

Helm: ลดความซับซ้อนในการปรับใช้

เมื่อคุณต้องการปรับใช้แอปพลิเคชันที่ซับซ้อนซึ่งใช้ทรัพยากร Kubernetes นับสิบหรือหลายร้อยรายการ เครื่องมือ kubectl จะไม่เหมาะสม ซึ่งเป็นสาเหตุที่เครื่องมือ Helm ได้รับการพัฒนา Helm เป็นผู้จัดการแพ็คเกจสำหรับ Kubernetes ที่สร้างบน kubectl และทำให้การปรับใช้แอปพลิเคชันง่ายขึ้น

  คุณสามารถมีบัญชี Robinhood หลายบัญชีได้ไหม

ในคำศัพท์ของชนเผ่าเฮลม์ แอปพลิเคชันเรียกว่าการเปิดตัว มันเชื่อมโยงกับแผนภูมิ กล่าวคือ คอลเลกชันของไฟล์การกำหนดค่าในรูปแบบ YAML ที่มีตัวแปรส่วนกลางและเทมเพลตที่อธิบายทรัพยากรของ Kubernetes

บทสรุป

การปรับใช้เป็นวัตถุ Kubernetes ที่จำเป็น เนื่องจากพลังอันยิ่งใหญ่แสดงถึงความรับผิดชอบที่ยิ่งใหญ่ คุณต้องระมัดระวังในการกำหนดค่าหรือเสี่ยงที่จะมีพฤติกรรมที่ไม่คาดคิด หากต้องการดำเนินการต่อด้วยการกำหนดค่าการปรับใช้ โปรดดูเอกสารประกอบของ Kubernetes

คุณอาจสำรวจบทแนะนำ Kubernetes ที่ดีที่สุดบางส่วนเพื่อเรียนรู้ตั้งแต่เริ่มต้นและเป็นผู้เชี่ยวชาญ

เรื่องล่าสุด

x