‫ฉันต้องการสละเวลาสักครู่เพื่อพูดคุยเกี่ยวกับ
‫DNS และ Kubernetes บางครั้งเรามองข้ามสิ่งนี้ไปใน
‫Docker และ Swarm และ Kubernetes DNS ก็ใช้งานได้ตามปกติ
‫ฉันต้องการให้รายละเอียดบางอย่างแก่คุณโดยด่วนเกี่ยวกับสิ่งที่เกิดขึ้นในเบื้องหลัง
‫ก่อนที่เราจะดำเนินการต่อ
‫สิ่งที่คุณเคยเจอมาคือถ้าคุณอยู่ในคอนเทนเนอร์
‫และคุณ cURL หรือ ping ชื่อบริการ คุณจะได้รับการตอบกลับกลับมา
‫เห็นได้ชัดว่ามีเซิร์ฟเวอร์
‫DNS ทำบางสิ่งเพื่อจับคู่บริการกับชื่อ
‫DNS เชื่อหรือไม่ว่า DNS เป็นทางเลือกในการบริการหรือส่วนเสริมภายในคลัสเตอร์
‫Kubernetes ของคุณ
‫แต่ทุกคนใส่มันเข้าไป
‫ที่จริงแล้ว เมื่อคุณติดตั้ง ไม่ว่าจะเป็น kubeadm หรือ
‫Docker Desktop หรืออะไรก็ตามที่คุณใช้ จะมีเซิร์ฟเวอร์
‫DNS อยู่ในนั้น
‫เริ่มด้วย 1 11 รีลีส CoreDNS เป็นค่าเริ่มต้น
‫มันเป็นมาตรฐาน
‫มีรุ่นก่อนหน้าที่เรียกว่า KubeDNS ซึ่งเลิกใช้แล้ว
‫ณ จุดนี้ และตอนนี้เราทุกคนควรใช้ CoreDNS
‫สิ่งนี้เรียกว่าการค้นพบบริการบน DNS
‫คุณมีมันใน Docker คุณมีมันใน Swarm
‫โดยพื้นฐานแล้วมันทำงานในลักษณะเดียวกันใน Kubernetes ซึ่งเมื่อคุณสร้างบริการ
‫คุณจะได้ชื่อโฮสต์ที่ตรงกับบริการ
‫แต่ชื่อโฮสต์นั้นเป็นส่วนหนึ่งของชื่อที่ใหญ่กว่า
‫นั่นคือชื่อโดเมนแบบเต็ม
‫เราไม่เข้าใจใน Docker หรือ Swarm
‫พวกเขาจดจ่ออยู่กับชื่อโฮสต์จริงๆ
‫ด้วย Kubernetes เรามีตัวเลือกมากขึ้นใช่ไหม
‫ทันทีที่แกะกล่อง คุณก็แค่พูดจากบริการหนึ่งไปอีกบริการหนึ่งโดยใช้ชื่อโฮสต์
‫หากคุณเริ่มใช้เนมสเปซ และเราจะพูดถึงเรื่องนี้ในภายหลัง
‫ลองนึกถึงการเว้นวรรคชื่อเพื่อแยกส่วนต่างๆ
‫ของแอปต่างๆ ออกจากพื้นที่เหล่านี้ภายในคลัสเตอร์เดียวกัน
‫ซึ่งจะไม่ขัดแย้งกันจริงๆ
‫ในทางเทคนิค คุณไม่สามารถสร้างพ็อดเดียวกัน หรือบริการเดียวกัน
‫หรือการปรับใช้เดียวกัน โดยใช้ชื่อเดียวกันในเนมสเปซเดียวกัน
‫หากคุณสร้างเนมสเปซอื่น ซึ่งคุณอาจทำเมื่อคุณมีขั้นสูงขึ้น
‫คุณก็จะมีชื่อเดียวกันในเนมสเปซที่ต่างกันได้ และเนมสเปซจะไม่ขัดแย้งกัน
‫ซึ่งรวมถึง DNS
‫อันที่จริง เมื่อคุณดูมาตรฐานชื่อโดเมนแบบเต็มที่นี่
‫คุณจะเห็นว่ามีชื่อโฮสต์ที่เราเคยใช้มาจนถึงปัจจุบัน
‫จากนั้นชื่อเนมสเปซ
‫ถ้าคุณจะพิมพ์ชื่อเต็มนี้ คุณจะต้องระบุเนมสเปซ
‫โดยค่าเริ่มต้น คุณได้ทำงานตามค่าเริ่มต้น
‫นั่นคือเนมสเปซเริ่มต้นสำหรับแอป
‫หากคุณใช้คำสั่งด่วนที่บรรทัดคำสั่งของ
‫kubectl get namespaces คุณจะเห็นรายการที่นี่
‫ฉันใช้ Docker Desktop ดังนั้นฉันจึงได้ตัวเสริมที่ระบุว่า Docker
‫ดังนั้นนั่นจะเป็นเพียงส่วนหนึ่งของ Docker Desktop
‫ของคุณที่เรียกใช้บริการ Docker พิเศษบางอย่างที่ทำเวทย์มนตร์บางอย่างที่
‫Docker มีให้ในคลัสเตอร์ Kubernetes
‫ค่าเริ่มต้นคือค่าที่คุณทิ้งลงในคลัสเตอร์พื้นฐาน
‫ส่วนอีกอันเป็นมาตรฐานที่มาพร้อมกับ
‫Kubernetes
‫เห็นได้ชัดว่าระบบหนึ่งกำลังเรียกใช้ระนาบควบคุม
‫นั่นคือระบบที่นั่น
‫สาธารณะเราไม่ได้ใช้งานมาก
‫มันมีอยู่แค่สองสามอย่างเท่านั้น
‫จากนั้น node-lease ก็เป็นสิ่งใหม่ในสภาพแวดล้อม Kubernetes
‫ที่ใหม่กว่า
‫เหล่านี้เป็นหัวข้อขั้นสูงจริงๆ ที่คุณไม่ต้องเริ่มต้นจริงๆ
‫คุณสามารถเรียกใช้คลัสเตอร์ของคุณได้โดยไม่ต้องยุ่งกับเนมสเปซเหล่านั้นมากนัก
‫โดยปกติแล้ว
‫สิ่งที่คุณจะต้องจัดการคือเนมสเปซเริ่มต้น และเมื่อคุณมีขนาดใหญ่ขึ้น
‫คุณอาจสร้างเนมสเปซหลายรายการสำหรับแอปพลิเคชันต่างๆ
‫ที่อาจมีชื่อเหมือนกัน
‫หรือบางทีคุณอาจต้องการปรับใช้สิ่งเดียวกันหลายครั้งด้วยชื่อบริการ
‫ชื่อพ็อด ชื่อการปรับใช้ และคุณไม่ต้องการให้มันขัดแย้งกัน
‫ดังนั้นคุณจะสร้างเนมสเปซที่แตกต่างกันสำหรับสิ่งเหล่านั้น
‫มันคล้ายกับสแต็ก Swarm เล็กน้อย แต่มีความแตกต่างกันมากระหว่างวิธีการทำงานของเนมสเปซและสแต็ก
‫ซึ่งฉันไม่ต้องการให้คุณคิดว่ามันเหมือนกันทุกประการ
‫เนมสเปซเป็นเพียงพารามิเตอร์ขององค์กรเท่านั้น
‫และไม่ได้ใช้งานทันที ควบคุมการแบ่งส่วนเครือข่ายหรืออะไรทำนองนั้น
‫ที่ได้รับขั้นสูงมากขึ้น คุณสามารถกังวลเกี่ยวกับสิ่งนั้นได้ในภายหลัง
‫กลับมาที่ชื่อโดเมนที่มีคุณสมบัติครบถ้วนที่นี่กัน
‫เมื่อคุณทราบชื่อโฮสต์และส่วนเนมสเปซแล้ว
‫ก็คือ . svc สำหรับบริการเพราะนั่นคือสิ่งที่เรากำลังค้นหาที่นี่
‫คลัสเตอร์นั้น โลคัลที่คุณเห็นในตอนท้ายคือชื่อ
‫DNS ของบริการเริ่มต้นที่กำหนดให้กับคลัสเตอร์ของคุณเมื่อคุณสร้างหรือหมุนมัน
‫หากคุณกำลังใช้บางอย่างเช่น kubeadm เพื่อสร้างคลัสเตอร์ของคุณ
‫คุณสามารถเปลี่ยนชื่อนั้นก่อนที่จะสร้างคลัสเตอร์ของคุณ
‫นี่คือหนึ่งโดยค่าเริ่มต้น
‫คุณจะทราบได้ว่าคุณจำเป็นต้องเปลี่ยนหรือไม่โดยพิจารณาจากการสร้างคลัสเตอร์
‫Kubernetes หลายคลัสเตอร์ หรือหากคุณมีข้อกำหนดภายนอกบางประการสำหรับวิธีที่แอปของคุณค้นหากันและกัน
‫ย้ำอีกครั้งว่า
‫DNS ทั้งหมดนี้อยู่ในคลัสเตอร์ของคุณเท่านั้น
‫ไม่ใช่บริการ DNS บางอย่างที่บริการภายนอกจะสามารถเห็นหรือใช้งานได้
‫เว้นแต่ว่าพวกเขากำลังพูดคุยกับ Kubernetes API
‫จากระยะไกล