คืนนี้
ข้อมูลที่ใช้ในการเตรียมเอกสารนี้นำมาจาก
เริ่มต้นด้วยการแนะนำที่สำคัญจากวงจรชีวิตของคลัสเตอร์ SIG: คลัสเตอร์เฟลโอเวอร์แบบไดนามิก Kubernetes (หรือเรียกอีกอย่างว่าการปรับใช้ HA ที่โฮสต์เอง) อยู่ในขณะนี้ kubeadm
(init
и join
). กล่าวโดยย่อสำหรับสิ่งนี้:
- ใบรับรองที่ใช้โดยคลัสเตอร์จะถูกถ่ายโอนไปยังข้อมูลลับ
- สำหรับความเป็นไปได้ในการใช้คลัสเตอร์ etcd ภายในคลัสเตอร์ K8s (เช่น การกำจัดการพึ่งพาภายนอกที่มีอยู่ก่อนหน้านี้)
etcd-ตัวดำเนินการ ; - บันทึกการตั้งค่าที่แนะนำสำหรับโหลดบาลานเซอร์ภายนอกที่ให้การกำหนดค่าที่ทนทานต่อข้อผิดพลาด (ในอนาคต มีการวางแผนว่าจะกำจัดการพึ่งพานี้ แต่ไม่ใช่ในขั้นตอนนี้)
สถาปัตยกรรมของคลัสเตอร์ Kubernetes HA ที่สร้างด้วย kubeadm
ดูรายละเอียดการดำเนินการได้ใน
API
ทีม apply
และโดยทั่วไปแล้ว การจัดการวัตถุที่ประกาศ kubectl
ในเซิร์ฟเวอร์ API นักพัฒนาเองก็อธิบายการตัดสินใจสั้น ๆ โดยบอกว่า kubectl apply
- ส่วนพื้นฐานของการทำงานกับการกำหนดค่าใน Kubernetes อย่างไรก็ตาม "มันเต็มไปด้วยข้อบกพร่องและแก้ไขได้ยาก" ดังนั้นฟังก์ชันนี้จึงต้องถูกนำกลับมาเป็นปกติและถ่ายโอนไปยังระนาบควบคุม ตัวอย่างปัญหาที่ง่ายและชัดเจนที่มีอยู่ในปัจจุบัน:
รายละเอียดการนำไปปฏิบัติอยู่ใน
ทำให้มีอยู่ในรุ่นอัลฟ่า kubectl
) ทำการตรวจสอบความถูกต้องจากฝั่งของคุณ (ภายใน kubectl create
и kubectl apply
) และออกเอกสารตามโครงการ (kubectl explain
). รายละเอียด-เข้า
บันทึกที่มีอยู่แล้ว O_APPEND
(แต่ไม่ O_TRUNC
) เพื่อหลีกเลี่ยงการสูญเสียบันทึกในบางสถานการณ์ และเพื่อความสะดวกในการตัดทอนบันทึกด้วยยูทิลิตี้ภายนอกเพื่อการหมุนเวียน
นอกจากนี้ในบริบทของ Kubernetes API ก็สามารถสังเกตได้ว่าใน PodSandbox
и PodSandboxStatus
runtime_handler
เพื่อบันทึกข้อมูลเกี่ยวกับ RuntimeClass
ในพ็อด (อ่านเพิ่มเติมในข้อความเกี่ยวกับ AdmissionReview
พวกเขาสนับสนุน ในที่สุด กฎ Admission Webhooks ก็มาถึงแล้ว
พื้นที่จัดเก็บ
PersistentLocalVolumes
subPath
subPathExpr
ซึ่งตอนนี้ใช้เพื่อกำหนดชื่อไดเร็กทอรีที่ต้องการ คุณลักษณะนี้เริ่มปรากฏใน Kubernetes 1.11 แต่สำหรับ 1.14 คุณลักษณะดังกล่าวยังคงอยู่ในสถานะเวอร์ชันอัลฟ่า
เช่นเดียวกับ Kubernetes รุ่นก่อนหน้า มีการเปลี่ยนแปลงที่สำคัญหลายประการสำหรับ CSI (Container Storage Interface) ที่กำลังพัฒนาอย่างแข็งขัน:
CSI
พร้อมใช้งานแล้ว (เป็นส่วนหนึ่งของเวอร์ชันอัลฟ่า) ExpandCSIVolumes
รวมถึงการรองรับการดำเนินการนี้ในไดรเวอร์ CSI เฉพาะ
คุณสมบัติอื่นสำหรับ CSI ในเวอร์ชันอัลฟ่า - CSIInlineVolume
ประตูคุณลักษณะ
นอกจากนี้ยังมีความคืบหน้าใน "ภายใน" ของ Kubernetes ที่เกี่ยวข้องกับ CSI ซึ่งผู้ใช้ปลายทาง (ผู้ดูแลระบบ) ไม่สามารถมองเห็นได้ ... ปัจจุบันนักพัฒนาถูกบังคับให้สนับสนุนปลั๊กอินพื้นที่เก็บข้อมูลแต่ละตัวสองเวอร์ชัน: หนึ่ง - "ใน วิธีเก่า” ภายในโค้ดเบส K8s (ใน -tree) และอันที่สอง - ซึ่งเป็นส่วนหนึ่งของ CSI ใหม่ (อ่านเพิ่มเติมเกี่ยวกับเรื่องนี้เช่นใน
ทั้งหมดนี้นำไปสู่ความจริงที่ว่าเวอร์ชันอัลฟ่าถึงแล้ว
นอกจากนี้ ยังรองรับอุปกรณ์บล็อคด้วย CSI (CSIBlockVolume
)
โหนด/คูเบเล็ต
นำเสนอเวอร์ชันอัลฟ่า /metrics/resource/v1alpha1
. กลยุทธ์ระยะยาวของนักพัฒนา
ความแตกต่างที่น่าสนใจมาก: แม้จะมีข้อได้เปรียบด้านประสิทธิภาพที่ชัดเจนของจุดสิ้นสุด gRPC เมื่อเปรียบเทียบกับกรณีต่างๆ ของการใช้รูปแบบ Prometheus (ดูผลลัพธ์ของการวัดประสิทธิภาพด้านล่าง)ผู้เขียนชอบรูปแบบข้อความของ Prometheus เนื่องจากความเป็นผู้นำที่ชัดเจนของระบบติดตามนี้ในชุมชน
“gRPC เข้ากันไม่ได้กับไปป์ไลน์การตรวจสอบหลักๆ ตำแหน่งข้อมูลจะมีประโยชน์สำหรับการส่งตัววัดไปยังเซิร์ฟเวอร์ตัววัดหรือส่วนประกอบการตรวจสอบที่รวมเข้ากับตัววัดโดยตรงเท่านั้น ประสิทธิภาพรูปแบบข้อความ Prometheus เมื่อใช้การแคชในเซิร์ฟเวอร์เมตริก ดีพอแล้ว เพื่อให้เราชอบ Prometheus มากกว่า gRPC เนื่องจากมีการใช้ Prometheus อย่างแพร่หลายในชุมชน เมื่อรูปแบบ OpenMetrics มีเสถียรภาพมากขึ้น เราจะสามารถเข้าถึงประสิทธิภาพของ gRPC ด้วยรูปแบบที่ใช้โปรโตได้"
หนึ่งในการทดสอบประสิทธิภาพเชิงเปรียบเทียบของการใช้รูปแบบ gRPC และ Prometheus ในตำแหน่งข้อมูล Kubelet ใหม่สำหรับตัววัด สามารถดูกราฟและรายละเอียดอื่นๆ เพิ่มเติมได้ใน
ท่ามกลางการเปลี่ยนแปลงอื่นๆ:
- Kubelet ตอนนี้ (ครั้งเดียว)
พยายามที่จะหยุด คอนเทนเนอร์อยู่ในสถานะที่ไม่รู้จักก่อนที่จะรีสตาร์ทและลบการดำเนินการ - เมื่อใช้งาน
ตอนนี้ไปที่คอนเทนเนอร์เริ่มต้นPodPresets
ถูกเพิ่ม ข้อมูลเดียวกับคอนเทนเนอร์ปกติ - คูเบเลต
เริ่มใช้ usageNanoCores
จากผู้ให้บริการสถิติ CRI และสำหรับโหนดและคอนเทนเนอร์บน Windowsเพิ่ม สถิติเครือข่าย - ข้อมูลระบบปฏิบัติการและสถาปัตยกรรมได้รับการบันทึกไว้ในฉลากแล้ว
kubernetes.io/os
иkubernetes.io/arch
วัตถุโหนด (ถ่ายโอนจากเบต้าเป็น GA) - ความสามารถในการระบุกลุ่มผู้ใช้ระบบเฉพาะสำหรับคอนเทนเนอร์ในพ็อด (
RunAsGroup
, ปรากฏตัวในK8s 1.11 )ขั้นสูง ก่อนเบต้า (เปิดใช้งานโดยค่าเริ่มต้น) - du และค้นหาใช้ใน cAdvisor
ซาเมนเนนีส ในการใช้งาน Go
CLI
ใน cli-runtime และ kubectl
ตัวอย่างการใช้งานไฟล์อย่างง่าย
นอกจากนี้:
-
เพิ่ม ทีมใหม่kubectl create cronjob
ซึ่งมีชื่อพูดเพื่อตัวเอง - В
kubectl logs
ตอนนี้คุณสามารถรวมกัน ธง-f
(--follow
สำหรับบันทึกการสตรีม) และ-l
(--selector
สำหรับการสืบค้นฉลาก) - Kubectl
สอน คัดลอกไฟล์ที่เลือกโดยไวด์การ์ด - ให้กับทีมงาน
kubectl wait
เพิ่ม ธง--all
เพื่อเลือกทรัพยากรทั้งหมดในเนมสเปซของประเภททรัพยากรที่ระบุ
คนอื่น ๆ
ความสามารถต่อไปนี้ได้รับสถานะเสถียร (GA):
-
ใช้ในข้อกำหนดพ็อดเพื่อกำหนดเงื่อนไขเพิ่มเติมโดยคำนึงถึงความพร้อมของพ็อดReadinessGate
- รองรับเพจขนาดใหญ่ (เรียกว่าฟีเจอร์เกท)
);HugePages
-
กำหนดเอง PodDNS ; - API ระดับความสำคัญ
ลำดับความสำคัญของพ็อดและการสำรอง .
การเปลี่ยนแปลงอื่นๆ ที่นำมาใช้ใน Kubernetes 1.14:
- นโยบาย RBAC เริ่มต้นไม่อนุญาตการเข้าถึง API อีกต่อไป
discovery
иaccess-review
ผู้ใช้ที่ไม่มีการตรวจสอบสิทธิ์ (ไม่ผ่านการรับรองความถูกต้อง). - การสนับสนุน CoreDNS อย่างเป็นทางการ
มั่นใจ Linux เท่านั้น ดังนั้นเมื่อใช้ kubeadm เพื่อปรับใช้ (CoreDNS) ในคลัสเตอร์ โหนดจะต้องทำงานบน Linux เท่านั้น (nodeSelectors ใช้สำหรับข้อจำกัดนี้) - การกำหนดค่าเริ่มต้นของ CoreDNS คือตอนนี้
ใช้ ปลั๊กอินไปข้างหน้า แทนการมอบฉันทะ นอกจากนี้ใน CoreDNSเพิ่ม readinessProbe ซึ่งป้องกันการโหลดบาลานซ์บนพ็อดที่เหมาะสม (ไม่พร้อมสำหรับการบริการ) - ใน kubeadm บนเฟส
init
หรือupload-certs
,เป็นไปได้ โหลดใบรับรองที่จำเป็นในการเชื่อมต่อระนาบควบคุมใหม่กับความลับ kubeadm-certs (ใช้ flag--experimental-upload-certs
). - มีเวอร์ชันอัลฟ่าสำหรับการติดตั้ง Windows
สนับสนุน gMSA (บัญชีบริการที่จัดการกลุ่ม) - บัญชีพิเศษใน Active Directory ที่คอนเทนเนอร์สามารถใช้ได้เช่นกัน - สำหรับ G.C.E.
เปิดใช้งาน การเข้ารหัส mTLS ระหว่าง etcd และ kube-apiserver - การอัปเดตในซอฟต์แวร์ที่ใช้/ขึ้นอยู่กับ: ไป 1.12.1, CSI 1.1, CoreDNS 1.3.1, รองรับ Docker 18.09 ใน kubeadm และเวอร์ชัน Docker API ที่รองรับขั้นต่ำคือ 1.26
PS
อ่านเพิ่มเติมในบล็อกของเรา:
- «
Kubernetes 1.13: ภาพรวมของนวัตกรรมหลัก "; - «
Kubernetes 1.12: ภาพรวมของนวัตกรรมหลัก "; - «
Kubernetes 1.11: ภาพรวมของนวัตกรรมหลัก "; - «
Kubernetes 1.10: ภาพรวมของนวัตกรรมหลัก '
ที่มา: will.com