เซิร์ฟเวอร์เมตริกเป็นแหล่งเมตริกทรัพยากรคอนเทนเนอร์ที่ปรับขนาดได้และมีประสิทธิภาพสำหรับไปป์ไลน์การปรับขนาดอัตโนมัติในตัวของ Kubernetes
เซิร์ฟเวอร์ตัววัดรวบรวมตัววัดทรัพยากรจาก Kubelets และเปิดเผยตัววัดเหล่านั้นใน Kubernetes apiserver ผ่าน Metrics API เพื่อใช้งานโดยแนวนอน Pod Autoscaler และ Vertical Pod Autoscaler นอกจากนี้ ยังเข้าถึง Metrics API ได้ด้วย kubectl top
ทำให้แก้ไขข้อบกพร่องไปป์ไลน์การปรับขนาดอัตโนมัติได้ง่ายขึ้น
คำเตือน
เซิร์ฟเวอร์เมตริกมีไว้เพื่อวัตถุประสงค์ในการปรับขนาดอัตโนมัติเท่านั้น ตัวอย่างเช่น อย่าใช้เพื่อส่งต่อตัววัดไปยังโซลูชันการตรวจสอบ หรือเป็นแหล่งของตัววัดโซลูชันการตรวจสอบ ในกรณีดังกล่าว โปรดรวบรวมเมตริกจากปลายทาง Kubelet /metrics/resource
โดยตรง
ข้อเสนอเซิร์ฟเวอร์เมตริก:
คุณสามารถใช้เซิร์ฟเวอร์เมตริกสำหรับ:
อย่าใช้เซิร์ฟเวอร์เมตริกเมื่อคุณต้องการ:
สำหรับกรณีการใช้งานที่ไม่รองรับ โปรดดูโซลูชันการตรวจสอบแบบเต็ม เช่น Prometheus
Metrics Server มีข้อกำหนดเฉพาะสำหรับการกำหนดค่าคลัสเตอร์และเครือข่าย ข้อกำหนดเหล่านี้ไม่ใช่ค่าเริ่มต้นสำหรับการแจกแจงคลัสเตอร์ทั้งหมด โปรดตรวจสอบให้แน่ใจว่าการกระจายคลัสเตอร์ของคุณรองรับข้อกำหนดเหล่านี้ก่อนใช้เซิร์ฟเวอร์เมตริก:
--kubelet-insecure-tls
ไปยังเซิร์ฟเวอร์เมตริก)hostNetwork
) อ่านเพิ่มเติมเกี่ยวกับการสื่อสารระหว่างระนาบควบคุมกับโหนด.status.addresses
และพอร์ตในฟิลด์ .status.daemonEndpoints.kubeletEndpoint.port
(ค่าเริ่มต้น 10250) เซิร์ฟเวอร์เมตริกจะเลือกที่อยู่โหนดแรกตามรายการที่จัดทำโดยแฟล็กบรรทัดคำสั่ง kubelet-preferred-address-types
(ค่าเริ่มต้น InternalIP,ExternalIP,Hostname
ในรายการ) เซิร์ฟเวอร์เมตริกสามารถติดตั้งได้โดยตรงจากรายการ YAML หรือผ่านทางแผนภูมิ Helm อย่างเป็นทางการ หากต้องการติดตั้ง Metrics Server รุ่นล่าสุดจากรายการ ส่วนประกอบ.yaml ให้รันคำสั่งต่อไปนี้
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/components.yaml
คำแนะนำในการติดตั้งสำหรับรุ่นก่อนหน้าสามารถพบได้ในรุ่นเซิร์ฟเวอร์เมตริก
เซิร์ฟเวอร์เมตริก | กลุ่ม/เวอร์ชัน API เมตริก | เวอร์ชัน Kubernetes ที่รองรับ |
---|---|---|
0.7.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.6.x | metrics.k8s.io/v1beta1 | 1.19+ |
0.5.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.4.x | metrics.k8s.io/v1beta1 | *1.8+ |
0.3.x | metrics.k8s.io/v1beta1 | 1.8-1.21 |
*Kubernetes เวอร์ชันที่ต่ำกว่า v1.16 จำเป็นต้องผ่านแฟล็กบรรทัดคำสั่ง --authorization-always-allow-paths=/livez,/readyz
เซิร์ฟเวอร์เมตริกสามารถติดตั้งในโหมดความพร้อมใช้งานสูงได้โดยตรงจากรายการ YAML หรือผ่านแผนภูมิ Helm อย่างเป็นทางการโดยการตั้งค่า replicas
ที่มากกว่า 1
หากต้องการติดตั้ง Metrics Server เวอร์ชันล่าสุดในโหมดความพร้อมใช้งานสูงจากรายการ high-availability.yaml ให้รันคำสั่งต่อไปนี้
บน Kubernetes เวอร์ชัน 1.21+:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability-1.21+.yaml
บน Kubernetes เวอร์ชัน 1.19-1.21:
kubectl apply -f https://github.com/kubernetes-sigs/metrics-server/releases/latest/download/high-availability.yaml
บันทึก
การกำหนดค่านี้ จำเป็น ต้องมีคลัสเตอร์ที่มีอย่างน้อย 2 โหนดซึ่งสามารถกำหนดเวลาเซิร์ฟเวอร์เมตริกได้
นอกจากนี้ เพื่อเพิ่มประสิทธิภาพสูงสุดของการกำหนดค่าที่มีความพร้อมใช้งานสูงนี้ ขอแนะนำ ให้เพิ่มแฟล็ก --enable-aggregator-routing=true
CLI ให้กับ kube-apiserver เพื่อให้คำขอที่ส่งไปยังเซิร์ฟเวอร์ Metrics มีความสมดุลในการโหลดระหว่าง 2 อินสแตนซ์
แผนภูมิ Helm ได้รับการดูแลเป็นองค์ประกอบเพิ่มเติมภายใน repo นี้ และเผยแพร่ไปยังพื้นที่เก็บข้อมูลแผนภูมิที่ได้รับการสนับสนุนในสาขา gh-pages
แผนภูมิเวอร์ชันใหม่จะถูกเผยแพร่สำหรับเซิร์ฟเวอร์เมตริกแต่ละรุ่น และยังสามารถเผยแพร่แยกกันได้หากมีความจำเป็น แผนภูมิบนสาขา master
ไม่ควรอ้างอิงโดยตรง เนื่องจากอาจมีการแก้ไขตั้งแต่เปิดตัวครั้งล่าสุด หากต้องการดูโค้ดแผนภูมิให้ใช้แท็กปล่อยแผนภูมิ
เซิร์ฟเวอร์เมตริกต้องการความสามารถ CAP_NET_BIND_SERVICE
เพื่อผูกกับพอร์ตที่มีสิทธิ์ในฐานะที่ไม่ใช่รูท หากคุณใช้งานเซิร์ฟเวอร์ตัววัดในสภาพแวดล้อมที่ใช้ PSS หรือกลไกอื่น ๆ เพื่อจำกัดความสามารถของพ็อด ตรวจสอบให้แน่ใจว่าเซิร์ฟเวอร์ตัววัดได้รับอนุญาตให้ใช้ความสามารถนี้ สิ่งนี้ใช้แม้ว่าคุณจะใช้แฟล็ก --secure-port
เพื่อเปลี่ยนพอร์ตที่ Metrics Server เชื่อมโยงกับพอร์ตที่ไม่มีสิทธิพิเศษ
เริ่มต้นจาก v0.5.0 Metrics Server มาพร้อมกับคำขอทรัพยากรเริ่มต้นที่ควรรับประกันประสิทธิภาพที่ดีสำหรับการกำหนดค่าคลัสเตอร์ส่วนใหญ่สูงสุด 100 โหนด:
การใช้ทรัพยากรเซิร์ฟเวอร์เมตริกขึ้นอยู่กับมิติอิสระหลายรายการ โดยสร้าง Scalability Envelope การกำหนดค่าเซิร์ฟเวอร์เมตริกเริ่มต้นควรทำงานในคลัสเตอร์ที่ไม่เกินเกณฑ์ใดๆ ที่แสดงด้านล่าง:
ปริมาณ | เกณฑ์เนมสเปซ | เกณฑ์คลัสเตอร์ |
---|---|---|
#โหนด | ไม่มี | 100 |
#พ็อดต่อโหนด | 70 | 70 |
#ปรับใช้กับ HPAs | 100 | 100 |
ทรัพยากรสามารถปรับได้ตามสัดส่วนตามจำนวนโหนดในคลัสเตอร์ สำหรับคลัสเตอร์ที่มีมากกว่า 100 โหนด ให้จัดสรรเพิ่มเติม:
คุณสามารถใช้แนวทางเดียวกันในการลดคำขอทรัพยากรได้ แต่มีขอบเขตที่อาจส่งผลกระทบต่อมิติความสามารถในการปรับขนาดอื่นๆ เช่น จำนวนพ็อดสูงสุดต่อโหนด
คุณอาจต้องเปลี่ยนแฟล็กที่ส่งไปยังคอนเทนเนอร์เซิร์ฟเวอร์เมตริก ทั้งนี้ขึ้นอยู่กับการตั้งค่าคลัสเตอร์ของคุณ ธงที่มีประโยชน์ที่สุด:
--kubelet-preferred-address-types
- ลำดับความสำคัญของประเภทที่อยู่โหนดที่ใช้ในการกำหนดที่อยู่สำหรับการเชื่อมต่อกับโหนดใดโหนดหนึ่ง (ค่าเริ่มต้น [ชื่อโฮสต์, InternalDNS, InternalIP, ExternalDNS, ExternalIP])--kubelet-insecure-tls
- อย่าตรวจสอบ CA ของใบรับรองการให้บริการที่แสดงโดย Kubelets เพื่อวัตถุประสงค์ในการทดสอบเท่านั้น--requestheader-client-ca-file
- ระบุชุดใบรับรองหลักสำหรับการตรวจสอบใบรับรองไคลเอ็นต์ในคำขอที่เข้ามา--node-selector
- สามารถดำเนินการเพื่อขูดเมตริกจากโหนดที่ระบุตามป้ายกำกับคุณสามารถรับรายการแฟล็กการกำหนดค่าเซิร์ฟเวอร์เมตริกทั้งหมดได้โดยการเรียกใช้:
docker run --rm registry.k8s.io/metrics-server/metrics-server:v0.7.0 --help
เซิร์ฟเวอร์ตัววัดเป็นส่วนประกอบในไปป์ไลน์ตัววัดหลักที่อธิบายไว้ในสถาปัตยกรรมการตรวจสอบ Kubernetes
สำหรับข้อมูลเพิ่มเติม โปรดดู:
ก่อนที่จะโพสต์ปัญหา ก่อนอื่นให้ตรวจสอบคำถามที่พบบ่อยและปัญหาที่ทราบ
เรียนรู้วิธีมีส่วนร่วมกับชุมชน Kubernetes บนหน้าชุมชน
คุณสามารถติดต่อผู้ดูแลโครงการนี้ได้ที่:
โปรเจ็กต์นี้ดูแลโดย SIG Instrumentation
การเข้าร่วมในชุมชน Kubernetes อยู่ภายใต้หลักจรรยาบรรณของ Kubernetes