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
โปรดทราบว่าเรามีการสร้างคอนเทนเนอร์ 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 และทำให้การปรับใช้แอปพลิเคชันง่ายขึ้น
ในคำศัพท์ของชนเผ่าเฮลม์ แอปพลิเคชันเรียกว่าการเปิดตัว มันเชื่อมโยงกับแผนภูมิ กล่าวคือ คอลเลกชันของไฟล์การกำหนดค่าในรูปแบบ YAML ที่มีตัวแปรส่วนกลางและเทมเพลตที่อธิบายทรัพยากรของ Kubernetes
บทสรุป
การปรับใช้เป็นวัตถุ Kubernetes ที่จำเป็น เนื่องจากพลังอันยิ่งใหญ่แสดงถึงความรับผิดชอบที่ยิ่งใหญ่ คุณต้องระมัดระวังในการกำหนดค่าหรือเสี่ยงที่จะมีพฤติกรรมที่ไม่คาดคิด หากต้องการดำเนินการต่อด้วยการกำหนดค่าการปรับใช้ โปรดดูเอกสารประกอบของ Kubernetes
คุณอาจสำรวจบทแนะนำ Kubernetes ที่ดีที่สุดบางส่วนเพื่อเรียนรู้ตั้งแต่เริ่มต้นและเป็นผู้เชี่ยวชาญ