‫ฉันจะซื่อสัตย์
‫ย้อนกลับไปเมื่อฉันเห็น Kubernetes YAML ครั้งแรก ฉันรู้สึกกลัวมาก
‫ดูเหมือนซับซ้อนกว่ารูปแบบการเขียน
‫นั่นเป็นเหตุผลที่ดี
‫มันเพิ่มความยืดหยุ่นมากมาย ให้คุณทำสิ่งต่างๆ
‫ได้อีกมากมาย แต่นั่นมาในราคา
‫นั่นคือการเรียนรู้พื้นฐานและวิธีการสร้างไฟล์เหล่านี้
‫เมื่อคุณเริ่มดูไฟล์เหล่านี้ครั้งแรก
‫มีหลายสิ่งหลายอย่างที่ฉันไม่แน่ใจด้วยซ้ำว่าเกิดอะไรขึ้นเมื่อฉันถือไฟล์เหล่านี้ครั้งแรก
‫เข้าใจอย่างถ่องแท้ว่าถ้าคุณรู้สึกสับสนเล็กน้อยเกี่ยวกับเรื่องนี้ในขณะที่เรากำลังดำเนินการอยู่
‫ลองดูวิดีโอเหล่านี้ซ้ำอีกครั้งเพราะฉันจะพยายามแยกย่อยในลักษณะที่ฉันคิดว่าดีที่สุดสำหรับการเรียนรู้
‫Kubernetes YAML
‫อย่างแรกคือเราสามารถเขียนสิ่งนี้ในทางเทคนิคใน
‫JSON แต่ YAML มีแนวโน้มที่จะจัดการและอ่านได้ง่ายขึ้นสำหรับมนุษย์
‫และ JSON ดีกว่าสำหรับคอมพิวเตอร์
‫สิ่งที่เกิดขึ้นเบื้องหลังคือมาตรฐานสำหรับมนุษย์อย่างพวกเราคือการเขียน
‫YAML จากนั้นมันจะแปลงเป็น JSON
‫ในทางเทคนิคคุณสามารถเขียน
‫JSON ได้ แต่มาตรฐานของ Kubernetes สำหรับมนุษย์ในการเขียนคือ
‫YAML
‫อย่างที่บอกไปก่อนหน้านี้ คุณสามารถมิกซ์หรือจับคู่ไฟล์เหล่านี้ได้
‫คุณสามารถมีทรัพยากรต่างๆ
‫มากมายในไฟล์เดียว แล้วทำสิ่งที่ตรงกันข้ามกับที่คุณมีไฟล์เดียวต่อทรัพยากร
‫ไม่เป็นไรจริงๆ มันขึ้นอยู่กับคุณ.
‫คำสั่งทำงานในลักษณะเดียวกัน
‫เรากำลังเรียกรายการเหล่านี้
‫คำอธิบายแบบเต็มของทรัพยากรคือรายการ
‫และรายการดังกล่าวมีข้อกำหนด
‫คุณจะเห็นข้อกำหนดเหล่านั้นสำหรับรูทคีย์ในไฟล์
‫YAML
‫รูทหมายถึงมันอยู่ต้นบรรทัด
‫ที่เริ่มต้นด้วยเวอร์ชัน
‫API มีความกรุณา
‫มีข้อมูลเมตา และมีสเปก
‫ดังนั้น คุณต้องเห็นสิ่งเหล่านั้นในทุกไฟล์เพื่อให้ทรัพยากรเหล่านี้ทำงานได้
‫และลองมาดูตัวอย่างสั้นๆ
‫จากบรรทัดคำสั่งกัน
‫หากคุณอยู่ใน repo Docker Mastery คุณจะเห็นไดเร็กทอรี
‫k8s-yaml ที่ฉันได้ใส่ตัวอย่างเหล่านี้ไว้ที่นี่
‫หากคุณไม่เห็นไดเร็กทอรีนั้น คุณอาจต้องทำการ
‫git-pull เพื่อรับการอัปเดตล่าสุดสำหรับ
‫repo หากคุณได้ทำการเปลี่ยนแปลงบางอย่างใน repo
‫จากการเรียนหลักสูตรนี้ ก็ไม่เป็นไร
‫คุณสามารถใช้ git-stash เพื่อซ่อนการเปลี่ยนแปลงเหล่านั้นชั่วคราว
‫แล้วทำการ git-pull
‫หรือคุณสามารถคัดลอกลงในไดเร็กทอรีอื่นได้
‫เพียงโคลนในตำแหน่งอื่นสำหรับส่วนนี้ของหลักสูตร
‫เนื่องจากเนื้อหา Kubernetes นี้ใหม่กว่าของดั้งเดิม
‫ดังนั้น บางท่านอาจกลับมาที่นี่ในภายหลังและไม่มีการอัปเดตล่าสุด
‫ตัวอย่างแรกที่นี่เป็นเพียงพ็อดง่ายๆ
‫นี่อาจเป็น YAML ที่ง่ายที่สุดที่เราสามารถสร้างได้
‫อย่างที่ฉันพูดไปก่อนหน้านี้ในหลักสูตรนี้ คุณจะไม่ได้สร้างพ็อดมากมายขนาดนั้น
‫เพราะนั่นเป็นแค่การสร้างเหมือนการวิ่งของนักเทียบท่า
‫นั่นไม่ใช่สิ่งที่คุณจะทำจริงๆ
‫มันไม่มีการอัปเดตแบบต่อเนื่อง มันไม่ใช่การทำให้ใช้งานได้ใช่ไหม
‫หากคุณต้องการแก้ไขปัญหา
‫หรือเพียงแค่ต้องการเรียกใช้งานง่ายๆ ในเครื่อง คุณก็สามารถทำได้
‫คุณจะสังเกตเห็นว่ามีข้อกำหนดสี่ข้อเหมือนกัน
‫เวอร์ชัน API ชนิด ข้อมูลเมตา
‫และข้อมูลจำเพาะ
‫เราจะพูดถึงสิ่งเหล่านั้นในการบรรยายครั้งต่อไป
‫สำหรับตอนนี้ฉันแค่อยากให้คุณเห็นว่าพ็อดชนิดนี้เป็นอย่างไร
‫ข้อมูลเมตามีแอตทริบิวต์ชื่อ
‫คีย์นั้นเป็นคีย์ที่จำเป็นของออบเจ็กต์
‫YAML ทั้งหมด
‫พวกเขาทั้งหมดต้องมีชื่อนั้น เหมือนกับที่ docker
‫run ต้องมีชื่อ วัตถุ Docker ทั้งหมดต้องมีชื่อ
‫เช่นเดียวกับ Kubernetes สเปกที่นี่คือเนื้อ
‫เราจะไปที่นั้นในอีกสักครู่ มาดูการปรับใช้กันอีกครั้ง
‫นี่คือการปรับใช้ครั้งเดียวที่มีการจำลองสองรายการของคอนเทนเนอร์เดียวกันนั้น
‫อาจเป็นสองเท่าของขนาด
‫แต่ด้วยเหตุผลที่ดี
‫เพราะถ้าคุณคิดเกี่ยวกับมัน คุณกำลังสร้างทรัพยากรการปรับใช้นั้น
‫จากนั้น นั่นคือการสร้าง ReplicaSet
‫นั่นคือการสร้างพ็อด
‫พื้นที่ข้อมูลจำเพาะจะซับซ้อนขึ้นเล็กน้อย
‫เพราะมันทำหลายอย่างที่เราจำเป็นต้องกำหนด
‫คุณจะสังเกตเห็นด้วยว่าเวอร์ชัน
‫API ของเราแตกต่างกันเล็กน้อยเนื่องจากเกี่ยวข้องกับประเภท
‫และประเภทในกรณีนี้คือการปรับใช้
‫เป็นสิ่งที่หมายถึงทรัพยากร
‫และเวอร์ชัน API ก็คือเวอร์ชันของ
‫API สำหรับประเภทนั้น ส่วนที่เหลือที่นี่มีความหวังเล็กน้อยสำหรับคุณ
‫ดูเหมือนไฟล์ Compose เล็กน้อย แต่รูปแบบต่างกันอย่างเห็นได้ชัด
‫ฉันเข้าใจว่ามันอาจสร้างความสับสนได้ โดยเฉพาะอย่างยิ่งหากคุณกำลังทำงานไปมาระหว่าง
‫Compose และ Kubernetes
‫ในตัวอย่างนี้ ฉันได้รวมบริการและการปรับใช้สำหรับการปรับใช้ประเภทเดียวกันนั้นเป็นไฟล์เดียว
‫นี่คือวิธีที่คุณจะมีหลายรายการในไฟล์เดียวเมื่อคุณใช้ขีดกลางสามอันเพื่อแยกสองส่วนออกจากกัน
‫นั่นเป็นเรื่องของ
‫YAML ที่จะบอก Kubernetes ว่า เฮ้ วัตถุนี้มีเอกลักษณ์เฉพาะตัว
‫ส่วนต่อไปจะเป็นวัตถุใหม่
‫คุณสามารถมีได้มากเท่าที่คุณต้องการที่นี่จนกว่ามันจะเกเรจนคุณต้องแยกมันออก
‫คุณจะเห็นในส่วนแรกนี้ เวอร์ชัน API คือ
‫V1 ของประเภททรัพยากรบริการ
‫คำว่า kind ในที่นี้อาจจะเป็นแค่แหล่งข้อมูล แต่พวกเขาเรียกมันว่าใจดี
‫ข้อมูลเมตาที่นี่อีกครั้ง ต้องมีชื่อ
‫ข้อมูลจำเพาะและสิ่งนั้นจะแตกต่างกันโดยสิ้นเชิงตามทรัพยากรที่คุณกำลังสร้าง
‫จากนั้นการปรับใช้ที่คล้ายกับที่เรามีก่อนหน้านี้
‫ซึ่งในกรณีนี้ ฉันมีแบบจำลองสามแบบและมีชื่อแตกต่างกันเล็กน้อย
‫แต่นอกเหนือจากนั้น มันคือ Nginx เดียวกัน
‫แค่ดูก็คิดว่า ว้าว ฉันต้องการเทมเพลตที่จะจัดเก็บ
‫ฉันจึงรู้ว่าจะเริ่มต้นอย่างไร เพราะมันดูค่อนข้างซับซ้อน
‫ไม่มีหน้าเอกสารใดที่อธิบายทั้งหมดนี้สำหรับทรัพยากรประเภทต่างๆ
‫มากมาย และต้องตั้งค่าแต่ละรายการอย่างไร
‫น่าเสียดายที่สิ่งที่เราได้รับจาก Compose
‫ซึ่งเป็นซิงเกิ้ลที่ดีแม้ว่าจะยาว
‫หน้าเว็บในเอกสาร Docker สำหรับรูปแบบการเขียนทั้งหมด
‫ในกรณีนี้
‫เราไม่ได้เข้าใจแบบนั้นกับ Kubernetes เพียงเพราะว่ามีความซับซ้อนมากเกินไป
‫และไม่ได้รวมอยู่ในที่เดียว
‫มันไม่ใช่แม้แต่แอพเดียว คุณสามารถเพิ่มประเภททรัพยากรได้มากขึ้นโดยการเพิ่มสิ่งที่เรียกว่า
‫CRD ที่เราจะพูดถึงในภายหลัง
‫เราสามารถเข้าไปได้ โดยพื้นฐานแล้วหมายความว่าคุณสามารถขยาย
‫Kubernetes ด้วยทรัพยากรประเภทต่างๆ ได้มากขึ้น
‫เนื้อหาของบุคคลที่สามเพิ่มเติม ซึ่งจะเพิ่มตัวเลือกเพิ่มเติมให้กับ
‫YAML นี้ นั่นเป็นเอกลักษณ์ของ Kubernetes
‫Swarm และ Docker ไม่อนุญาต
‫รูปแบบของพวกเขาถูกกำหนดให้สามารถขยายได้ขึ้นอยู่กับสิ่งที่ติดตั้งในคลัสเตอร์ของคุณ