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

เผยแพร่แล้ว: 2022-11-09

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 จะอ่านคำจำกัดความของคุณและสร้างตามที่แสดงหรือประกาศทุกประการ

หากต้องการใช้การทำให้ใช้งานได้แบบประกาศ คุณจะต้องสร้างไฟล์ 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

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

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

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

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

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

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

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

 kubectl scale deployment nginx-deployment --replicas=10
มาตราส่วน-1

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

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

 kubectl get all

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

ทั้งหมด-1

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

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

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

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

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

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

บทสรุป

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

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