‫ไม่เป็นไร. การบรรยายนี้เริ่มต้นโดยที่การบรรยายครั้งสุดท้ายสิ้นสุดลง
‫ดังนั้น
‫หากคุณเพิ่งข้ามไปที่อันนี้และข้ามอันสุดท้ายไป
‫ให้กลับไปที่อันนั้นเพราะคุณจะต้องการ Deployment ที่เราสร้างขึ้นในอันนั้นเพื่อเริ่มอันนี้
‫เมื่อฉันทำ kubectl รับทั้งหมด
‫ฉันควรเห็นว่าฉันมีหนึ่ง Deployment ที่มีชุดแบบจำลองห้าชุด
‫คุณจะเห็นห้าฝัก
‫จากนั้น คุณจะมีบริการเริ่มต้นของ Kubernetes ซึ่งอยู่ที่นั่นเสมอ
‫จากนั้นบริการ
‫httpenv คลัสเตอร์ IP
‫แน่นอน คุณอาจมีที่อยู่ IP และชื่อพ็อดต่างกัน
‫นั่นคือสิ่งที่เราต้องเป็น
‫เรามีการปรับใช้นี้
‫เราได้สร้างที่อยู่ IP ภายในคลัสเตอร์เพื่อให้ผู้อื่นเข้าถึงได้ด้วยชื่อที่เรียกง่ายของ
‫httpenv เนื่องจากเป็นชื่อบริการ
‫มาสร้างอันที่เปิดเผยภายนอกบน
‫IP โฮสต์กันเถอะ นี่อาจเป็นถ้าคุณอยู่ในศูนย์ข้อมูลหรือที่ไหนสักแห่งที่คุณไม่มีตัวโหลดบาลานซ์
‫คุณสามารถควบคุมได้ด้วยบริการโหลดบาลานซ์ ซึ่งเราจะคุยกันประมาณหนึ่งนาที
‫โดยพื้นฐานแล้ว ในกรณีนี้ คุณต้องการทำ
‫NodePort ที่คุณได้รับพอร์ตจากที่ใดที่หนึ่งในช่วงสูงของคลัสเตอร์
‫Kubernetes ของคุณ ซึ่งคุณสามารถใช้เพื่อพูดคุยจากภายนอกได้
‫ดังนั้นจะสามารถเข้าถึงได้จากบริการภายนอกบางอย่างใช่ไหม
‫มันจะไม่อยู่ที่พอร์ต 80 โดยค่าเริ่มต้น
‫NodePorts มีไว้เพื่อเป็นพอร์ตที่สูง ดังนั้นคุณจึงมักจะวางบางอย่างไว้ข้างหน้า
‫เช่น โหลดบาลานเซอร์ภายนอกหรือบริการอัตโนมัติบางอย่างที่จะจัดการให้คุณ
‫ในกรณีนี้
‫ฉันสามารถทำ kubectl expose ได้อีกครั้ง
‫มันจะดูเหมือนครั้งสุดท้ายที่เราทำ
‫การปรับใช้ httpenv.
‫นั่นคือสิ่งที่เราต้องเปิดเผย
‫เราจะใส่พอร์ต 8888 อีกครั้ง
‫แต่เราจะตั้งชื่อใหม่เพราะเรามีชื่อ
‫httpenv อยู่แล้ว
‫ดังนั้นอันนี้เราจะเรียก
‫httpenv-np โดยไม่มีพอร์ต
‫ด้วยวิธีนี้ มันจะทำงานเคียงข้างกับคลัสเตอร์
‫IP ที่มีอยู่แล้ว
‫จากนั้นเราจะเปลี่ยนประเภทเป็น NodePort
‫คุณจะสังเกตเห็นประเภทของ NodePort เนื่องจากเป็นประเภทเริ่มต้น
‫ซึ่งเราสามารถระบุได้ด้วยตนเองหากคุณต้องการ
‫ประเภทเริ่มต้นคือ IP ของคลัสเตอร์
‫ถ้าฉันกลับไปทำ kubectl รับบริการ คุณจะเห็นบริการใหม่ที่มีประเภท
‫NodePort
‫มาพูดถึงพอร์ตทางด้านขวากัน
‫พอร์ตเหล่านั้น เมื่อพวกมันมีโคลอนอยู่ตรงกลาง ตรงกันข้ามกับสิ่งที่คุณเห็นใน
‫Docker และ Swarm
‫ในกรณีนี้ พอร์ตทางด้านซ้ายคือพอร์ตภายในคลัสเตอร์
‫ภายในคอนเทนเนอร์ที่แสดงรายการ
‫จากนั้นพอร์ตทางด้านขวาคือพอร์ตที่อยู่บนโหนดของคุณที่เปิดเผยต่อโลกภายนอก
‫คุณอาจสงสัยว่าพอร์ตทางด้านขวามาจากไหน
‫พอร์ตนั้นมาจากช่วงเริ่มต้นสำหรับ NodePorts ที่ตั้งค่าไว้ล่วงหน้าภายในคลัสเตอร์คอนเทนเนอร์ของคุณ
‫มันเป็นช่วงสูง ความหวังที่นี่คือไม่มีความขัดแย้งใช่ไหม
‫ว่าโดยค่าเริ่มต้นไม่มีอะไรอื่นในระบบของคุณที่ทำงานบนพอร์ตเหล่านั้น
‫เพราะบ่อยครั้งที่พอร์ตต่ำเช่น 8888 นั้นมีอยู่ทั่วไปเพียงพอสำหรับอย่างอื่น
‫พอร์ตใด
‫ๆ ในช่วงที่ต่ำมากมักจะเข้าถึงได้โดยรูทเท่านั้น
‫พอร์ต 1024 และต่ำกว่า
‫มีบางสิ่งที่ควรทราบที่นี่
‫อันแรกคือคุณจะเห็น IP ของคลัสเตอร์
‫แม้ว่าเมื่อเราสร้างบริการ NodePort นี้ เราก็ไม่ได้พูดถึง
‫IP ของคลัสเตอร์
‫เรากล่าวว่า NodePort
‫บริการเหล่านี้เป็นบริการเสริม
‫หมายความว่ามันเริ่มต้นด้วย IP ของคลัสเตอร์ จากนั้นไปที่
‫NodePort จากนั้นไปที่บริการเสริมของตัวโหลดบาลานซ์
‫แต่ละคนจะสร้างบริการด้านบนในรายการนี้
‫ซึ่งหมายความว่าเมื่อฉันสร้าง NodePort จะสร้างคลัสเตอร์
‫IP endpoint ให้ฉันเพราะนั่นคือวิธีการเชื่อมต่อ
‫ใช้การเชื่อมต่อที่เข้ามาในพอร์ตนั้นบนพอร์ตสูงของโหนด
‫จากนั้นจะเปลี่ยนเส้นทางไปยัง IP ของคลัสเตอร์สำหรับบริการนั้น
‫แน่นอน เช่นเดียวกับสิ่งอื่นๆ ใน Kubernetes ทั้งหมดนี้สามารถเปลี่ยนแปลงและปรับแต่งได้
‫สิ่งหนึ่งที่คุณสามารถเปลี่ยนได้คือช่วงพอร์ต
‫หนึ่งในนั้นคือคุณสามารถหลีกเลี่ยง IP ของคลัสเตอร์ได้
‫สิ่งต่างๆ มากมายที่คุณสามารถทำได้ แต่ส่วนใหญ่คุณสามารถทำได้ใน
‫YAML เท่านั้น ซึ่งเราจะพูดถึงในภายหลัง
‫เมื่อคุณทำสิ่งต่าง ๆ ที่บรรทัดคำสั่งเช่นนี้
‫เราจะจำกัดจำนวนตัวเลือกที่เราสามารถใช้ได้
‫หากคุณทำเกินกว่าที่ตัวเลือกเหล่านั้นอนุญาต คุณจะต้องเริ่มทำ
‫YAML เราจะพูดถึงเรื่องนี้ในภายหลังในหลักสูตร
‫ตกลง. หากคุณใช้
‫Linux NodePort นี้สามารถเข้าถึงได้บน localhost ทันที
‫ดังนั้น คุณสามารถใช้ localhost หรือ IP ของโฮสต์เพื่อ
‫cURL พอร์ตนี้ ไม่ว่าคุณจะมีพอร์ตอะไร
‫มันอาจจะไม่ใช่พอร์ตเดียวกับของฉันตั้งแต่ของฉันคือ
‫32334
‫หากคุณใช้ Docker Desktop จะมีชั้นอำนวยความสะดวกที่เรียกว่า vpnkit ซึ่งเพิ่งสร้างขึ้นใน
‫Docker Desktop ซึ่งจะเชื่อมต่อสิ่งนี้กับ localhost
‫บนเครื่อง Windows หรือ Mac ของคุณ
‫ฉันสามารถนั่งบน Mac และ cURL localhost
‫32334 ได้ที่นี่
‫ฉันได้รับการตอบสนองแบบเดียวกันราวกับว่าฉัน cURLed
‫IP ของคลัสเตอร์โดยตรง เหตุผลที่มาที่นี่บน Docker Desktop
‫ก็เพื่อที่คุณจะได้ไม่ต้องกระโดดเข้าไปในพ็อดเหล่านั้นเหมือนที่เราทำก่อนหน้านี้
‫เพื่อให้คุณสามารถเข้าถึงบริการได้
‫นี่เป็นวิธีหนึ่งในการแสดงบริการ
‫Kubernetes บนเครื่องของคุณ เพื่อให้คุณสามารถทดสอบสิ่งต่างๆ ได้
‫ดังนั้น
‫หากคุณกำลังพัฒนาหรือทดสอบภายใน Kubernetes คุณก็สามารถทำ
‫NodePort และไปที่พอร์ตนั้นได้ ซึ่งจะสุ่มบนโฮสต์ของคุณ
‫อีกครั้ง คุณสามารถระบุพอร์ตที่แน่นอนได้ แต่คุณต้องดำเนินการใน
‫YAML ซึ่งเราจะดำเนินการในภายหลัง
‫อีกทางเลือกหนึ่ง หากคุณใช้ Docker Desktop
‫คือบริการโหลดบาลานเซอร์ในตัว
‫คุณจำฉันได้พูดก่อนหน้านี้เมื่อเราพูดถึงบริการสี่ประเภทนี้
‫นั่นคือตัวโหลดบาลานซ์ไม่ได้สร้างขึ้นโดยค่าเริ่มต้น
‫และวิธีเดียวที่คุณจะใช้งานได้คือผ่านบริการภายนอกซึ่งมักจะอยู่ในบริการคลาวด์ ขวา.
‫สำหรับ Amazon นั่นจะเป็น ELB และ ALB
‫ด้วย DigitalOcean นั่นจะเป็นตัวโหลดบาลานซ์ของพวกเขา
‫คุณจะต้องเพิ่มปลั๊กอินนั้นใน Kubernetes เพื่อให้ทำงานกับตัวโหลดบาลานซ์ภายนอกเหล่านั้นได้
‫โดยพื้นฐานแล้ว kube API จะพูดคุยกับ API ของพวกเขาเพื่อควบคุมตัวโหลดบาลานซ์นั้น
‫หากคุณใช้ Docker Desktop คุณสามารถลองใช้คำสั่งนี้ได้
‫เราจะเรียกมันว่า
‫httpenv-lb สำหรับบริการนี้ และเราจะเปลี่ยนประเภทเป็นโหลดบาลานเซอร์
‫หากเราทำ kubectl get service เราควรเห็นตัวโหลดบาลานซ์สามตัวสำหรับการปรับใช้นี้
‫อีกครั้ง หากคุณใช้ Docker Desktop
‫คุณจะสามารถดูทั้งสามได้ หากคุณใช้ Linux หรือใช้ Minikube
‫หรืออะไรทำนองนั้น คุณจะเห็นเพียงสองรายการเท่านั้น
‫โหลดบาลานเซอร์แต่ละตัว เนื่องจากในทางเทคนิคเหมือนกับปลั๊กอินหรือบริการของบุคคลที่สามที่เป็น API ระยะไกล ตัวโหลดบาลานซ์จึงมีคุณสมบัติที่แตกต่างกันและสิ่งที่รองรับ
‫คุณสามารถดูเอกสารของพวกเขาเพื่อดูว่าพวกเขาจะทำอะไรได้บ้าง
‫ในกรณีนี้ ด้วย Docker Desktop ทั้งหมดที่เราทำคือเราบอกพอร์ต
‫8888 ที่เป็นส่วนหนึ่งของการปรับใช้ จากนั้นปลั๊กอินบริการโหลดบาลานเซอร์จาก
‫Docker จะเผยแพร่บนพอร์ต 8888
‫สิ่งที่ดีที่นี่คือวิธีหนึ่งที่จะทำให้
‫Kubernetes ของคุณอยู่บนพอร์ตเฉพาะนอกชุดเริ่มต้นใช่ไหม
‫ดังนั้น เมื่อเราทำ NodePort เราถูกกำหนดหรือจำกัดให้กับชุดนั้นในช่วง
‫30000 หากคุณต้องการทำอะไรแบบเดียวกับที่คุณทำกับ
‫Compose หรือ Swarm หรือ Docker ที่ทำงานอยู่ในเครื่องที่คุณต้องการเรียกใช้บนพอร์ตอย่าง 80 หรืออะไรก็ตาม ตอนนี้คุณสามารถใช้
‫Docker Desktop โดยใช้ Kubernetes ในตัวได้แล้ว ทำโหลดบาลานเซอร์นั้นแล้วพิมพ์พอร์ตนั้นที่นั่นและมันจะตอบสนองที่นั่น
‫ตอนนี้บน Mac หรือ Windows ฉันสามารถพิมพ์ cURL
‫localhost 8888 และรับคำตอบนั้นกลับมาได้
‫คุณจะสังเกตเห็นว่าตัวโหลดบาลานซ์ยังมีพอร์ตอื่นอยู่
‫อีกครั้ง นั่นเป็นเพราะว่าอย่างน้อย 32 ช่วงที่นั่น อย่างน้อยก็คือ
‫NodePort ที่สร้างขึ้นใน NodePort ที่กำลังสร้างขึ้น
‫ในเบื้องหลังทางเทคนิค
‫อย่าลืมว่าสิ่งเหล่านี้เป็นเลเยอร์ที่แตกต่างกันสามชั้น ดังนั้นตัวโหลดบาลานเซอร์จึงยอมรับแพ็กเก็ตของฉัน
‫จากนั้นส่งต่อไปยัง NodePort จากนั้น NodePort จะส่งผ่านไปยัง IP ของคลัสเตอร์
‫จะมีอยู่เสมอที่
‫NodePort แสดงไว้ข้างๆ 8 สี่ตัวสำหรับตัวโหลดบาลานซ์
‫แม้ว่าจะไม่ใช่พอร์ตที่โหลดบาลานเซอร์ใช้บน
‫localhost ของฉันจริงๆ
‫ก่อนไปบรรยายต่อไป เรามาเคลียร์ทุกอย่างที่เราเพิ่งทำไป
‫เราสร้างสิ่งต่าง ๆ มากมาย
‫คำสั่งเหล่านี้แสดงว่าคุณสามารถใช้คำสั่ง delete
‫กับหลายอ็อบเจ็กต์พร้อมกันได้
‫ไม่จำเป็นต้องเป็นวัตถุที่เกี่ยวข้องกัน
‫ที่จริงแล้ว คุณสามารถสร้างรายการใหญ่ได้หากต้องการด้วยคำสั่งเดียว