‫มีข้อมูลเมตาสองส่วนใน YAML นี้ที่คุณอาจเคยเห็นในตัวอย่างและนึกถึง โดยสงสัยว่าป้ายกำกับและคำอธิบายประกอบมีไว้เพื่ออะไร
‫คุณอาจไม่ได้ตระหนักถึงความสำคัญของพวกเขา
‫เป็นองค์ประกอบสำคัญของ Kubernetes และวิธีที่สิ่งต่าง
‫ๆ เชื่อมโยงถึงกัน
‫มากกว่า Swarm มาก
‫อันแรกคือฉลาก ป้ายกำกับอยู่ภายใต้คีย์ข้อมูลเมตาในรูทของไฟล์
‫ดังนั้นจึงไม่บังคับ
‫คุณไม่จำเป็นต้องใส่ไว้แต่เป็นค่าคีย์
‫หรือรายการค่าคีย์ ใต้ส่วนหัวของป้ายกำกับ
‫สิ่งเหล่านี้มีสาเหตุหลายประการ
‫ไม่จำเป็นเสมอไป แต่คุณอาจต้องการสำหรับการเลือกออบเจ็กต์
‫จัดกลุ่ม และแม้กระทั่งกรองในภายหลัง
‫นี้สามารถเป็นอะไรก็ได้ที่อธิบายวัตถุหรือทรัพยากร
‫อาจเป็นคู่ของค่าคีย์ที่ค่าเป็นจริงหรือเท็จ
‫กุญแจสามารถเป็นอะไรก็ได้ที่คุณต้องการ
‫ในแต่ละออบเจกต์มีคีย์ได้ไม่เกิน 1 คีย์ ดังนั้นคุณจึงไม่มีคีย์สองคีย์ในแถวใน
‫YAML สำหรับออบเจ็กต์เดียวกันที่มีชื่อคีย์ สมมติว่าแอป ถูกต้อง
‫สิ่งเหล่านี้ใช้เพื่ออธิบายวัตถุจริงๆ
‫ทรัพยากรที่เรากำลังสร้างเหล่านี้มีคุณสมบัติแตกต่างกันไป
‫อาจเป็นเพราะสภาพแวดล้อมอย่าง prod, dev หรือ test
‫อาจเป็นตำแหน่งเช่น dmz หรือแบ็กเอนด์หรือส่วนหน้า
‫อาจเป็นชื่อแอป
‫หรืออาจเป็นชื่อลูกค้า หากคุณโฮสต์ไซต์ไคลเอ็นต์หรืออะไรก็ตาม
‫อาจเป็นอะไรก็ได้ที่คุณต้องการและไม่มีมาตรฐานมากมาย
‫เอกสาร Kubernetes ที่ระบุไว้ในแหล่งข้อมูลนี้มีตัวอย่างให้คุณบ้าง
‫แต่นี่เป็นเพียงตัวอย่างเท่านั้น
‫อุตสาหกรรมมีมาตรฐานไม่มากนัก
‫ขึ้นอยู่กับทีมของคุณและบริษัทของคุณจริงๆ ว่าคุณต้องการอธิบายสิ่งนี้อย่างไร
‫เรายังมีคำอธิบายประกอบ พวกมันเป็นหยินและหยาง
‫ป้ายกำกับนั้นง่ายมาก
‫พวกมันมีขนาดจำกัดมากและคุณสามารถใส่อักขระอะไรเข้าไปได้
‫พวกมันมีไว้เพื่ออธิบายทรัพยากร
‫ด้วยคำอธิบายประกอบ นี่เป็นข้อมูลที่ซับซ้อนมากขึ้นและข้อมูลหลายค่า
‫อะไรทำนองนั้น
‫โดยปกติคุณจะเห็นคำอธิบายประกอบที่ใช้เมื่อคุณเพิ่มข้อมูลที่กำหนดเองลงใน
‫Kubernetes ซึ่งสามารถพูดคุยกับ Kubernetes และดึงข้อมูลออกมาได้
‫คำอธิบายประกอบอาจมีไว้เพื่อจัดเก็บข้อมูลการกำหนดค่า
‫เช่น พร็อกซีและข้อมูลขาเข้า มักจะจัดเก็บการกำหนดค่าที่แตกต่างกัน
‫ภายในคำอธิบายประกอบที่แตกต่างกัน
‫ดังนั้น สิ่งเหล่านี้ไม่จำเป็นสำหรับการอธิบายแต่มีมากกว่าสำหรับการกำหนดค่า
‫กลับไปที่ป้ายกำกับกันสักครู่ เพราะมันยังมีอีกมากที่เป็นกุญแจสำคัญในการทำความเข้าใจว่าสิ่งเหล่านี้ทำงานอย่างไรใน
‫Kubernetes
‫สิ่งแรกคือ เราสามารถทำตัวกรองอย่างง่ายได้โดยการจำกัดป้ายกำกับจากบรรทัดคำสั่ง
‫เราสามารถรับพ็อดได้ และบอกว่า แสดงเฉพาะพ็อดที่มีป้ายกำกับนี้
‫คุณยังสามารถใช้เครื่องหมายจุลภาคเพื่อเพิ่มป้ายกำกับได้หลายรายการ
‫อันที่จริง มีไวยากรณ์ทั้งหมดสำหรับสิ่งนี้ ซึ่งคุณสามารถทำไวยากรณ์ประเภทต่างๆ
‫ที่แตกต่างกัน หรือที่แตกต่างกัน หรือ และ และ
‫จริงๆ แล้ว เป็นหนึ่งในสิ่งที่ฉันไม่อยากสอนคุณทั้งหมดเพราะมันจะเหมือนกับการเรียนรู้
‫Regex เป็นสิ่งที่คุณจะไม่ได้เรียนรู้มันโดยเพียงแค่ลองครั้งเดียว
‫เฉพาะเมื่อคุณต้องการเท่านั้นที่คุณจะเข้าใจมันจริงๆ
‫เอกสารจาก
‫Kubernetes นั้นยอดเยี่ยมจริงๆ พวกเขามีลิงก์หลายลิงก์ที่ฉันใส่ไว้ในแหล่งข้อมูลที่จะนำคุณไปสู่เส้นทางต่างๆ
‫ที่คุณอาจต้องการป้ายกำกับ
‫ค่อนข้างตรงไปตรงมา คุณไม่จำเป็นต้องเรียนรู้สิ่งนั้นจนกว่าคุณจะรู้ว่าคุณต้องการมันเพื่อแก้ปัญหา
‫คุณสามารถใช้มันเพื่อใช้คำสั่งได้
‫หากคุณมีสิ่งของมากมายในไฟล์ YAML ขนาดใหญ่ไฟล์เดียว
‫และคุณต้องการใช้เฉพาะบางส่วนของไฟล์
‫YAML นั้น
‫ฉันไม่ได้ทำสิ่งนี้มากนัก แต่มีที่ที่คุณสามารถจำกัดให้พูดได้
‫ใช้เฉพาะการเปลี่ยนแปลงหรือข้อมูลที่คุณใส่ใน
‫YAML สำหรับป้ายกำกับเฉพาะ
‫แน่นอน อีกครั้งกับอันนี้ คุณสามารถใส่ไวยากรณ์เดียวกันได้
‫คุณสามารถมีป้ายชื่อเดียว
‫คุณสามารถใส่เครื่องหมายจุลภาค มีหลายป้ายกำกับและค่าต่างๆ
‫ที่นั่น มันขึ้นอยู่กับคุณ.
‫มีอีกสิ่งหนึ่งที่ป้ายกำกับมีความสำคัญต่อการทำงานของ
‫Kubernetes
‫มีทรัพยากรบางอย่างที่พูดคุยกับแหล่งข้อมูลอื่นหรือเชื่อมต่อกับแหล่งข้อมูลเหล่านี้หรือเกี่ยวข้องกับแหล่งข้อมูลเหล่านี้
‫แล้วแต่คุณอยากจะพูด ตัวอย่างที่ดีคือบริการต่างๆ
‫จำเป็นต้องรู้ว่าจะส่งทราฟฟิกไปยังพ็อดใด
‫คุณอาจสงสัยว่ามันรู้ได้อย่างไร?
‫ฉันหมายถึง เมื่อคุณพิมพ์ ถ้าคุณทำคำสั่งบริการ
‫kubectl และคุณกำลังชี้ไปที่การปรับใช้ มันใช้อะไรในการระบุการปรับใช้นั้นกันแน่
‫ใน CLI คุณคงคิดว่ามันชี้ไปที่อ็อบเจกต์การปรับใช้จริงๆ
‫แต่จริงๆ แล้ว บริการจำเป็นต้องพูดคุยกับพ็อด ไม่ใช่ตัวการทำให้ใช้งานได้เอง
‫มันใช้สิ่งที่เรียกว่าตัวเลือกป้ายกำกับ
‫นี่เป็นเรื่องปกติที่มีทรัพยากรต่างๆ มากมายที่เป็นนามธรรมของพ็อดในระดับที่สูงขึ้น
‫เพื่อให้พวกเขาเชื่อมโยงกับพ็อดหรือรู้ว่าพ็อดใดเป็นของพวกเขา
‫พวกเขาใช้ตัวเลือกป้ายกำกับ คุณจะเห็นว่าใน YAML
‫ภายใน repo ของเราที่คุณใช้สำหรับการบรรยายครั้งล่าสุด
‫หากดูในแอพ yml คุณจะสังเกตเห็นว่าตลอดมา
‫เรามีบางสิ่งที่เราไม่ได้พูดถึง
‫อันแรกอยู่ด้านบนสุดของการบริการ
‫เรามีภายใต้ spec a selector
‫ที่จะต้องอยู่ที่นั่น
‫เรากำลังบอกคีย์และค่าของป้ายกำกับสำหรับพ็อดที่จำเป็นต้องกำหนดเส้นทางการรับส่งข้อมูล
‫นั่นเป็นเพียงการจับคู่ง่ายๆ
‫มันต้องไปหาพ็อดด้วย
‫จากนั้นในการปรับใช้ด้านล่าง คุณจะเห็นว่าข้อมูลจำเพาะของเรามีตัวเลือกของตัวเอง,
‫matchLabels, app, app-nginx
‫สิ่งที่เกิดขึ้นมีวัตถุทั้งสองกำลังเลือกพ็อดตามการจับคู่นั้น
‫นั่นหมายความว่าในเทมเพลตภายใต้ข้อกำหนดของเรา
‫ซึ่งเรากำลังสร้างเทมเพลตพ็อด ซึ่งจำเป็นต้องมีป้ายกำกับนั้นเพื่อให้ทรัพยากรเหล่านั้นสามารถค้นหาพ็อดของตนได้
‫สิ่งที่ดีคือใน Kubernetes เวอร์ชันใหม่กว่า อย่างน้อยด้วยการปรับใช้เพียงครั้งเดียว
‫สิ่งเหล่านี้จะต้องซิงค์กัน
‫จะล้มเหลวในการปรับใช้จริงหากเห็นว่าป้ายกำกับการจับคู่ตัวเลือกไม่ตรงกับป้ายกำกับข้อมูลเมตาของเทมเพลตเพราะต้องติดตั้งเพื่อให้ใช้งานได้แม้กระทั่งพ็อดและสามารถควบคุมได้
‫มีไว้เพื่อป้องกันไม่ให้คุณทำผิดโดยไม่ได้ตั้งใจ
‫มันจะคาดหวังให้คุณมีชิ้นส่วนเหล่านั้นอยู่ในนั้น
‫ในเวอร์ชันเก่า มันเคยมีวิธีที่จะสร้างมันขึ้นมาโดยอัตโนมัติโดยค่าเริ่มต้น
‫ดังนั้นคุณจึงสามารถทิ้งเนื้อหาเหล่านั้นได้
‫พวกเขาหยุดทำอย่างนั้นแล้ว
‫และบังคับให้คุณใส่สิ่งนี้ลงไป ฉันคิดว่านั่นเป็นสิ่งที่ดี
‫โดยเฉพาะอย่างยิ่งความสำคัญของตัวเลือกป้ายกำกับเหล่านี้
‫ในทางเทคนิค
‫หากคุณกลับไปที่ Swarm Swarm จะทำสิ่งใหม่ๆ ได้ตั้งแต่แกะกล่อง โดยมีป้ายกำกับที่จับคู่สิ่งต่างๆ
‫ตั้งแต่สแต็กไปจนถึงบริการ และสแต็คไปยังวอลุ่ม และสิ่งต่างๆ
‫เช่นนั้น
‫เราไม่สามารถควบคุมมันได้จริงๆ และเราไม่เห็นมันมากนักในอินเทอร์เฟซ
‫เป็นเบื้องหลังสำหรับเราใน
‫Swarm
‫แต่มันก็จำกัดมากเช่นกัน
‫คุณไม่สามารถเปลี่ยนแปลงสิ่งต่างๆ ได้ทันที
‫คุณไม่จำเป็นต้องไปปรับแต่งสิ่งเหล่านั้นเพื่อการตั้งค่าที่ไม่เหมือนใคร
‫ที่นี่ เราอาจมีบริการพูดคุยกับการปรับใช้หลายครั้ง
‫หากเราต้องการเปลี่ยนตัวเลือกเหล่านั้น
‫ตัวเลือกไม่ใช่แค่การเชื่อมโยงทรัพยากรเข้าด้วยกัน
‫นอกจากนี้ยังเกี่ยวกับการควบคุมว่าพวกเขาไปที่ไหน
‫บนโหนด คุณสามารถใช้ป้ายกำกับและตัวเลือกเพื่อควบคุมว่าจะไปที่ไหน
‫คุณสามารถใช้การปรับแต่งเพิ่มเติมกับสิ่งต่าง
‫ๆ ที่เรียกว่า taints และ toleration ซึ่งตรงกันข้ามกับที่คุณบอกโหนดว่าพวกเขาไม่สามารถทำบางสิ่งได้
‫เพื่อให้ Kubernetes รู้ว่าโดยพื้นฐานแล้วจะควบคุมว่าพ็อดของคุณไปที่ใด
‫สิ่งเหล่านี้ได้รับการปรับแต่งและก้าวหน้าอย่างรวดเร็ว
‫การทำทั้งหมดนี้ร่วมกันอาจทำให้มีขนดกและบ้าได้
‫ฉันแนะนำให้คุณค่อยๆ ไปกับพวกเขา
‫ให้ทุกอย่างเรียบง่ายตั้งแต่แกะกล่อง
‫หลีกเลี่ยงมลทินและความอดทนจนกว่าคุณจะต้องพิจารณาสิ่งเหล่านั้นจริงๆ
‫ไม่เป็นไร. มาทำความสะอาดส่วนนี้กันเถอะ
‫หากคุณมีสิ่งใดที่ทำงานอยู่ในเนมสเปซเริ่มต้นสำหรับคลัสเตอร์ของคุณ หากคุณเพียงแค่ทำ
‫kubectl รับทั้งหมด และคุณเห็นสิ่งต่าง ๆ ที่นั่นนอกเหนือจาก Kubernetes
‫API เอง ให้ดำเนินการลบทรัพยากรเหล่านั้นทั้งหมดเพราะเราจะดำเนินการต่อไป .
‫เราจะไม่ต้องการสิ่งเหล่านั้น