‫เอาล่ะ
‫ไม่ว่าคุณจะเรียกใช้นักเทียบท่าของคุณจากที่ใดเราสามารถสร้างโหนดเดี่ยวได้สำหรับการทดสอบของเราเอง
‫วิธีที่ฉันสามารถบอกได้ว่า Swarm เปิดอยู่หรือไม่ฉันสามารถทำข้อมูลนักเทียบท่าและคุณจะสังเกตเห็น Swarm ไม่ทำงาน
‫ดังนั้นเราจึงรู้ว่า Swarm ไม่ได้เปิดใช้ที่นี่ ตามค่าเริ่มต้น Docker จะไม่เปิดใช้งานคุณสมบัติ Swarm
‫ใด ๆ
‫ฉันสามารถเรียกใช้ docker swarm init เพื่อเริ่มต้น ใช้เวลาประมาณครึ่งวินาทีและเราก็ทำเสร็จแล้ว
‫สิ่งที่เรามีตอนนี้คือโหนดเดียวที่เต็มไปด้วยคุณสมบัติและฟังก์ชั่นการใช้งานทั้งหมดที่เราได้รับนอกกรอบ
‫นั่นอาจเป็นตัวอย่างสั้นที่สุดของหลักสูตรนี้ทั้งหมด
‫ฉันหมายถึงเกิดอะไรขึ้น เราพิมพ์คำสั่งและเวทมนตร์ ไม่ได้มีเวทมนตร์อะไรเลย
‫มันเป็นสิ่งที่รวดเร็วและมีประสิทธิภาพมากในการเขียนโปรแกรม Go ของนักเทียบท่า แต่ที่สำคัญคือทันทีที่ออกมาจากกล่องมันทำพวงของ PKI
‫และสิ่งความปลอดภัย
‫มันสร้างใบรับรองรูตสำหรับ swarm ที่จะใช้เพื่อสร้างความไว้วางใจและลงนามใบรับรองสำหรับโหนดทั้งหมดและผู้จัดการทั้งหมด
‫มันจะสร้างใบรับรองพิเศษสำหรับโหนดตัวจัดการแรกนี้เพราะมันเป็นผู้จัดการกับคนงาน
‫จากนั้นจะสร้างโทเค็นเหล่านี้ซึ่งเราสามารถใช้บนโหนดอื่นเพื่อเข้าร่วมฝูงนี้
‫จากนั้นจะมีสิ่งอื่น ๆ อีกมากมายในพื้นหลังซึ่งเปิดใช้งาน swarm API และสร้างสิ่งที่เรียกว่า
‫Raft Consensus Database ซึ่งเราจะพูดถึงต่อไปในส่วนการผลิตของหลักสูตร
‫เพียงเพื่อให้คุณรู้ว่า Raft เป็นโปรโตคอลที่รับประกันความมั่นคงในหลาย ๆ
‫โหนดและเหมาะอย่างยิ่งสำหรับการใช้งานใน Cloud ที่เราไม่สามารถรับประกันได้ว่าสิ่งใดก็ตามที่จะสามารถใช้ได้ตลอดเวลา
‫มันสร้างฐานข้อมูลนั้นบนดิสก์
‫มันเก็บการกำหนดค่าของฝูงและผู้จัดการคนแรกและมันก็เข้ารหัสมัน
‫สมมติว่าคุณใช้เวอร์ชัน 1 13 หรือใหม่กว่า จากนั้นมันจะรอโหนดอื่น
‫ๆ ก่อนที่จะเริ่มการจำลองฐานข้อมูลจริง ๆ
‫อีกครั้งการรับส่งข้อมูลทั้งหมดที่จะทำเมื่อเราสร้างโหนดอื่น ๆ ทั้งหมดจะถูกเข้ารหัส
‫หนึ่งในองค์ประกอบหลักของ
‫Swarm ที่สร้างความแตกต่างเมื่อออกมาครั้งแรกคือเราไม่ต้องการระบบจัดเก็บค่าคีย์เพิ่มเติมหรือสถาปัตยกรรมฐานข้อมูลบางอย่างเพื่อจัดการการกำหนดค่าแบ็กเอนด์ของ Swarm ของเรา
‫หากคุณเคยอยู่ในอุตสาหกรรมนี้มานานหลายปีหรือหลายสิบปีมาแล้วมีแนวคิดนี้โดยทั่วไปคือ
‫config db ซึ่งเป็นระบบฐานข้อมูลแยกต่างหากที่คุณต้องทำซ้ำซ้อนซึ่งจะเก็บข้อมูลทั้งหมดเกี่ยวกับการติดตั้งและระบบอัตโนมัติ
‫Swarm ได้สร้างที่ตรงเข้า Docker ลงใน daemon และจัดการมันให้กับเรา
‫เราไม่จำเป็นต้องทำอะไรเลย ไม่มีรหัสผ่านที่ต้องกังวล
‫ไม่มีบริการพิเศษที่จะเริ่มต้นหรืออะไรอย่างนั้น
‫ดังนั้นกลับไปที่บรรทัดคำสั่ง
‫คุณจะสังเกตได้ว่าที่นี่พูดถึง ...
‫ถ้าฉันต้องการเพิ่มคนงานในฝูงฉันเพียงแค่ต้องตัดและวางลงบนเซิร์ฟเวอร์อื่น ๆ ที่ฉันจะเพิ่ม
‫ต่อมาเราจะสร้างโหนดหลายโหนด แต่ตอนนี้เราจะเก็บมันไว้ที่โหนดเดียว
‫ลองมาดูคำสั่งสองสามคำที่จะได้รับจากมัน
‫สิ่งแรกคือเราสามารถทำโหนดนักเทียบท่าได้ ในกรณีนี้เราเพิ่งเห็นโหนดผู้จัดการหนึ่งโหนดที่เราสร้างขึ้น
‫คุณจะสังเกตเห็นว่ามีการทำเครื่องหมายว่าเป็นผู้นำและจะมีผู้นำได้ครั้งละหนึ่งคนเท่านั้นในบรรดาผู้จัดการทั้งหมด
‫อีกครั้งเนื่องจากเรามีเพียงหนึ่งอย่างเห็นได้ชัดว่ามันเป็นผู้นำ เราสามารถดูความช่วยเหลือเพื่อดูตัวเลือกอื่น
‫ๆ ที่เรามีที่นี่ จริง
‫ๆ แล้วคำสั่งโหนดที่ใช้สำหรับการนำเซิร์ฟเวอร์ของคุณเข้าและออกจากฝูงหรือส่งเสริมพวกเขาจากคนงานไปยังผู้จัดการหรือลดระดับพวกเขาจากผู้จัดการกลับไปหาคนงาน
‫หากคุณย้อนกลับไปที่คำสั่งนักเทียบท่าสำหรับเล็กน้อยเราจะสังเกตเห็นว่าจริง ๆ แล้วมันเป็นขอบเขตที่แคบมากที่จะสั่ง
‫มันเป็นเพียงการเริ่มต้นไม่ว่าจะเข้าร่วมหรือออกจาก
‫คำสั่งปลดล็อกใหม่ซึ่งเราสามารถพูดคุยในการบรรยายในภายหลัง
‫สำหรับตอนนี้เรามาเน้นที่คำสั่งบริการนักเทียบท่าใหม่ที่น่าตื่นเต้น
‫อีกครั้งบริการในกลุ่มแทนที่รันนักเทียบท่า
‫ฉันไม่รู้ความจริง แต่ฉันคิดว่านี่เป็นความคิดที่ว่าเราไม่ต้องการทำลายฟังก์ชันการทำงานของ
‫Docker ที่มีอยู่ แต่การรัน Docker นั้นสร้างขึ้นจากพื้นดินในฐานะโฮสต์โซลูชันเดียว
‫แนวคิดทั้งหมดคือมุ่งเน้นไปที่คอนเทนเนอร์ในระบบที่พูดถึง
‫ในขณะที่เมื่อเราเริ่มพูดคุยเกี่ยวกับกลุ่มเราไม่สนใจมากเกี่ยวกับแต่ละโหนด
‫เราอาจไม่ได้ตั้งชื่อพวกเขา
‫เราปฏิบัติต่อพวกเขาเหมือนวัวควายหากคุณเคยได้ยินเกี่ยวกับสัตว์เลี้ยงเมื่อเปรียบเทียบกับวัวที่พวกมันเป็นเพียงตัวเลข
‫เราไม่ได้ไปที่แต่ละโหนดจริงๆและเริ่มคอนเทนเนอร์แต่ละอัน
‫เราเพียงแค่โยนข้อกำหนดไปที่กลุ่มในรูปแบบของบริการและจากนั้นมันจะปรับแต่งวิธีการที่จะต้องวางสิ่งเหล่านั้นออกมาซึ่งโหนดที่พวกเขาต้องการจะเป็นและเราเพิ่งรู้ว่ามันได้รับกลับมาของเรา
‫บริการนักสร้างนักสร้างเป็นวิธีที่เราให้คำสั่งซื้อใหม่ ลองทำอะไรที่ง่ายจริงๆ
‫ลองเริ่มกันที่ภาพอัลไพน์กันเถอะ จากนั้นเราก็จะได้ภาพอัลไพน์เพียงใช้ ping เพื่อกด
‫8 8 8 8 ซึ่งเป็นเซิร์ฟเวอร์ DNS
‫ของ Google จริง ๆ แต่เราแค่อยากให้มันทำในขณะที่เราตรวจสอบสิ่งที่เกิดขึ้น
‫จากนั้นคุณจะเห็นว่าการทำงานของนักเทียบท่ามันพ่นรหัสกลับเฉพาะที่ไม่ใช่รหัสคอนเทนเนอร์ นั่นคือ ID
‫บริการ
‫คุณจะเห็นว่าขณะนี้เรามีบริการหนึ่งรายการ
‫เช่นเดียวกับคำสั่งเรียกใช้นักเทียบท่าของเราเนื่องจากเราไม่ได้ตั้งชื่อมันจึงให้ชื่อแบบสุ่ม
‫เราเห็นได้ว่ามันหมุนตัวแล้ว
‫หนึ่งในหนึ่ง เมื่อคุณดูบริการคุณจะเห็นหมายเลขนี้ด้วย /
‫ตรงกลางเสมอ นั่นหมายถึงสิ่งที่อยู่ทางซ้ายคือจำนวนจริงที่กำลังทำงานอยู่
‫และทางด้านขวาคือจำนวนที่คุณระบุเพื่อให้ทำงาน
‫เป้าหมายของผู้ประพันธ์คือทำให้ตัวเลขเหล่านี้ตรงกันไม่ว่าจะเกิดอะไรขึ้น
‫แต่นี่ไม่ได้แสดงให้เราเห็นภาชนะจริง
‫นี่เป็นเพียงการแสดงรายการบริการของเราเพื่อให้เราสามารถเจาะลึกลงไปอีกหน่อย
‫เราทำบริการนักเทียบท่า ps แล้วเราให้ชื่อหรือ ID
‫ของบริการและนั่นจะแสดงให้เราเห็นงานหรือคอนเทนเนอร์สำหรับบริการนี้ คุณจะเห็นว่ามันคล้ายกับคำสั่ง
‫docker container ls แต่จริงๆแล้วมันมีองค์ประกอบของโหนดนี้เพราะเมื่อคุณจัดการกับสถานการณ์หลายเซิร์ฟเวอร์เราอาจจำเป็นต้องรู้ว่าเซิร์ฟเวอร์ตัวใดกำลังทำงานอยู่
‫คุณจะสังเกตเห็นว่าจริง ๆ แล้วมันเป็นชื่อของการเพิ่มขึ้นของชื่อบริการ
‫หากเรากลับไปที่คำสั่ง docker container ก็ยังใช้งานได้
‫ในกรณีนี้ orchestration of Swarm
‫กำลังเพิ่มข้อมูลบางอย่างให้กับชื่อและรูปภาพจริงที่กำลังทำงานอยู่ เราจะกล่าวถึงความแตกต่างเล็กน้อยเหล่านั้นในภายหลังเช่นกัน
‫สำหรับตอนนี้เรามาใช้บริการนั้นและขยายมัน
‫สำหรับสิ่งนั้นเราใช้การปรับปรุงบริการนักเทียบท่าจากนั้นชื่อของบริการของเราหรือรหัสในกรณีนี้ฉันจะทำ ID และฉันต้องการเปลี่ยนคุณลักษณะเกี่ยวกับบริการ
‫ในกรณีนี้ฉันต้องการเปลี่ยนจำนวนแบบจำลอง
‫ดังนั้นหากเราทำบริการนักเทียบท่าอีกครั้งตอนนี้เราจะเห็นสามในสาม ถ้าเราทำบริการนักเทียบท่า ps
‫ตอนนี้เราเห็นงานสามอย่าง คุณจะสังเกตเห็นว่าทั้งสองเพิ่งถูกสร้างขึ้นเมื่อไม่กี่วินาทีที่ผ่านมา
‫ถ้าเราเร็วพอและถ้าเราปรับใช้บางอย่างที่ใหญ่พอเราสามารถเรียกใช้บริการได้และเห็นว่ามันแสดงให้เราเห็นว่าศูนย์สาม
‫หนึ่งในสาม
‫มันจะเพิ่มมากขึ้นเมื่อสิ่งต่าง ๆ เริ่มต้นขึ้น
‫มันเกิดขึ้นเมื่ออัลไพน์อยู่ในเครื่องนี้แล้วในแง่ของภาพลักษณ์และมันใช้เวลาไม่นานนักในการเริ่มคำสั่ง ping
‫เราอดอาหารไม่ไหว
‫สิ่งที่น่าสนใจเกี่ยวกับคำสั่งอัปเดตคือคุณสามารถจินตนาการถึงความแตกต่างระหว่างคำสั่งเรียกใช้ Docker
‫ที่คุณอาจใช้กับเซิร์ฟเวอร์ dev
‫หรือเซิร์ฟเวอร์ทดสอบเดียวหรือบนเครื่องของคุณ
‫นั่นคือหนึ่งในเป้าหมายการออกแบบของ Swarm
‫คำสั่งที่เรายังไม่ได้ใช้จริงๆคือคำสั่งอัพเดท Docker
‫นั่นเป็นคำสั่งสำหรับนักเรียกใช้คอนเทนเนอร์ที่อนุญาตให้เราอัปเดตตัวแปรบางอย่างบนคอนเทนเนอร์ที่ใช้งานของเราโดยไม่ต้องฆ่าและรีสตาร์ท
‫ตัวเลือกเหล่านั้นเกือบทั้งหมดเกี่ยวข้องกับการ จำกัด และควบคุมการใช้ทรัพยากรสำหรับคอนเทนเนอร์นั้น
‫เพราะนั่นเป็นหนึ่งในสิ่งปกติที่คุณเห็นเมื่อคุณเรียกใช้แอปพลิเคชั่นระยะยาวคือคุณต้องเปลี่ยนทรัพยากรของมันอาจเป็นเพราะฐานข้อมูลใหญ่ขึ้นและต้องการ
‫RAM มากกว่า
‫หรือบางทีคุณอาจมีกระบวนการควบคุมที่กิน CPU มากเกินไปและคุณจำเป็นต้อง จำกัด มัน
‫หากเราช่วยเหลือในคำสั่งอัปเดตบริการนักเทียบท่าคุณจะเห็นว่าเรามีตัวเลือกมากมาย
‫เนื่องจากเป้าหมายของบริการ Swarm คือสามารถแทนที่คอนเทนเนอร์และอัปเดตการเปลี่ยนแปลงในบริการโดยไม่ทำให้ทุกอย่างพังทลายลง
‫หากคุณมีบริการที่มีสามตู้บรรจุอยู่ในนั้นคุณสามารถลงรายการทีละรายการเพื่อทำการเปลี่ยนแปลงและทำการอัพเดทแบบกลิ้งซึ่งเป็นรูปแบบสีเขียวสีน้ำเงินที่เราพูดถึง
‫นั่นเป็นเหตุผลที่เราเห็นตัวเลือกเพิ่มเติมมากมายที่นี่เพราะเราสามารถเปลี่ยนตัวเลือกเหล่านี้ที่อาจต้องรีสตาร์ทคอนเทนเนอร์ แต่ฝูงอย่างชาญฉลาดจะตรวจสอบให้แน่ใจว่าวิธีที่เราอัปเดตนั้นอยู่ในรูปแบบที่ทำให้มั่นใจได้ว่า
‫ดังนั้นกลับไปที่รายการนักเทียบท่าของเราอย่างรวดเร็วจริง ๆ
‫คุณจะสังเกตเห็นว่าเรามีสามตัวนี้แล้วและจะเกิดอะไรขึ้นถ้าฉันเข้าไปข้างในและเป็นพวกหัวรุนแรงทำตู้คอนเทนเนอร์นักเทียบท่าและฉันระบุหนึ่งในตู้เหล่านี้และฉันบังคับมัน
‫สมมติว่าฉันชนะคนแรกและนำมันออกมา
‫เอาล่ะ
‫ตอนนี้ฉันทำบริการนักเทียบท่าแล้วคุณจะเห็นว่ามันแสดงให้เห็นถึงสองในสามได้อย่างไร
‫เพราะฉันเข้าไปด้านหลังของ Swarm
‫และจริง ๆ แล้วฉันเอาภาชนะที่วิ่งอยู่ออกไปมันจะระบุว่าและมันจะเปิดตัวใหม่ภายในไม่กี่วินาที
‫ดังนั้นถ้าฉันทำบริการนักเทียบท่าบนพื้นผิวแข็งคุณจะเห็นว่าจริง ๆ แล้วมันแสดงประวัติของงานแรกที่นี่ในรายการว่ามันมีงานที่ล้มเหลวและเริ่มงานใหม่ 24
‫วินาทีที่ผ่านมา
‫นี่เป็นหนึ่งในความรับผิดชอบของระบบการจัดวางคอนเทนเนอร์เพื่อให้แน่ใจว่าบริการที่คุณระบุนั้นทำงานอยู่เสมอและหากบริการล้มเหลวระบบจะกู้คืนจากความล้มเหลวนั้น
‫ซึ่งวิธีที่แตกต่างจากนักเทียบท่าวิ่งใช่ไหม?
‫นักเทียบท่าวิ่งจะไม่สร้างภาชนะใหม่
‫ดังนั้นเมื่อใดก็ตามที่เราทำคำสั่งบริการนักเทียบท่าเหล่านี้เราไม่ได้พูดถึงการกระทำโดยตรงเช่นสร้างคอนเทนเนอร์
‫เรากำลังบอกระบบการปรับตัวจริง ๆ เอาล่ะวางงานนี้ไว้ในคิวของคุณ
‫เมื่อคุณไปถึงได้โปรดดำเนินการกับฝูงที่ฉันถามที่นี่ นั่นเป็นความแตกต่างใหญ่
‫มันบอบบางในบรรทัดคำสั่ง แต่มันแตกต่างกันมากเพราะมันหมายความว่ามีความเป็นไปได้ในการย้อนกลับ
‫มีการลดความล้มเหลวและสติปัญญามากมายที่รวมอยู่ในนั้น
‫ในกรณีนี้ถ้าฉันต้องการลบคอนเทนเนอร์เหล่านี้ทั้งหมดฉันต้องลบบริการออก
‫ฉันต้องทำบริการนักเทียบท่า rm
‫และจากนั้นน้ำแข็ง
‫ถ้าเราทำบริการนักเทียบท่าเราไม่เห็นอะไรเลย ถ้าเราทำคอนเทนเนอร์นักเทียบท่า
‫ls เราจะเห็นตู้สามตู้
‫เราไปกันแล้ว
‫นั่นแสดงให้เห็นว่ามีระบบอัตโนมัติเกิดขึ้นในแบ็กเอนด์
‫เราสามารถแสดงได้อย่างรวดเร็วว่าเราลบบริการ แต่ระบบการประสานไม่ได้ผ่านกระบวนการทั้งหมดของการทำความสะอาดบริการและงานที่อยู่เบื้องหลัง
‫แนวคิดเหล่านี้น่าจะเข้าใจง่ายเพราะพวกเขาเพิ่งขยายแนวคิดของนักวิ่ง Docker ที่เรามีมาก่อนในหลักสูตรนี้
‫ต่อไปเรามาสร้างโหนดแบบหลายโหนดและเริ่มขยายคอนเทนเนอร์ของเราออก