Score:0

คลัสเตอร์ KubeADM: วิธีกำหนดค่า DNS อย่างถูกต้อง

ธง au

ฉันมีโปรเจ็กต์ต่อไปนี้ที่ฉันใช้เพื่อสร้างคลัสเตอร์ Kubernetes ของตัวเองบนเครื่องโลคัล (macOS) ผ่าน KubeAdm: https://github.com/sasadangelo/k8s-cluster โดยพื้นฐานแล้วฉันเริ่มจากสิ่งนี้ โครงการ และทำการอัปเดตต่อไปนี้:

  • กำหนดค่าการปรับใช้ Vagrant ผ่านไฟล์ YAML
  • รองรับ K8s 1.6 APIs, K8s 1.18 และ Calico 3.8.8
  • ปรับใช้แดชบอร์ด K8s อัตโนมัติ

ตอนนี้ฉันสบายดีกับคลัสเตอร์นี้ แต่ฉันมีปัญหา DNS บางอย่างที่ฉันต้องการทราบวิธีการแก้ไข เครื่องมือนี้ใช้ไฟล์ Vagrant เพื่อเริ่มกล่อง Vagrant 3 กล่อง จากนั้นฉันใช้สคริปต์ 3 ตัวเป็นหลัก:

  • configuration_box.shฉันใช้เพื่อติดตั้งซอฟต์แวร์ที่จำเป็นในแต่ละกล่องเช่น docker, kubeadm, kubelet, kubectl เป็นต้น
  • configuration_master.shใช้เพื่อกำหนดค่าเฉพาะโหนดหลัก ติดตั้งปลั๊กอินเครือข่าย และเรียกใช้ kubeadm เริ่มต้น.
  • configuration_worker.shใช้เพื่อกำหนดค่าโหนดผู้ปฏิบัติงานที่เข้าร่วมคลัสเตอร์

ปัญหาของฉันก็คือว่า resolv.conf ของ Pods ของฉันมีลักษณะดังนี้:

เนมเซิร์ฟเวอร์ 10.96.0.10
ค้นหา default.svc.cluster.local svc.cluster.local cluster.local <โดเมนอื่นที่มาจากเครื่องโฮสต์>
ตัวเลือก ndots:5

ไฟล์นี้มีปัญหาสองประการ:

  1. ไม่อนุญาตให้ฉันเข้าถึงอินเทอร์เน็ต อันที่จริงฉันต้องเพิ่มด้วยตนเองโดยเพิ่มบรรทัดนี้ที่จุดเริ่มต้นของไฟล์:
เนมเซิร์ฟเวอร์ 8.8.8.8

และลบออกเมื่อไม่ต้องการอีกต่อไป (หากฉันเก็บไว้ DNS ภายในไม่ทำงาน)

  1. ในส่วนการค้นหามีโดเมนที่มาจากเครื่องโฮสต์ของฉัน: <other domain coming from host machine> ที่ทำให้เกิดปัญหา

ฉันอ่านเอกสารประกอบมากมาย แต่ฉันก็ยังมีปัญหาในการหาวิธีเปลี่ยนรหัสของฉันเพื่อหลีกเลี่ยงปัญหาทั้งสองนี้

Michael Hampton avatar
cz flag
หากคุณไม่มีเหตุผลเฉพาะในการตั้งค่าคลัสเตอร์การพัฒนาสามโหนด ให้พิจารณาใช้ minikube แทน
Salvatore D'angelo avatar
au flag
เท่าที่ฉันรู้ Minikube เป็นโหนดเดียว ฉันต้องทดสอบแอปพลิเคชันของฉันด้วย Pods ที่ทำงานบนพนักงานหลายคน
c4f4t0r avatar
nl flag
@SalvatoreD'angelo พร้อม minikube เวอร์ชันล่าสุด คุณสามารถเพิ่มหลายโหนดได้
Salvatore D'angelo avatar
au flag
สวัสดี ใช่ ฉันสังเกตเห็นสิ่งนี้ ฉันไม่รู้ แต่ยังไม่ชัดเจนว่าเป็นโหนดจริง (ฉันหมายถึง Virtual Machine เช่น Virtual Box) หรือเป็นแค่คอนเทนเนอร์ หากเป็น VM ซึ่งเป็นเทคโนโลยีพื้นฐานที่ minikube ใช้ ฉันพยายามค้นหาคำตอบ แต่ไม่มีโชค
Score:2
ธง ng
  1. ไม่อนุญาตให้ฉันเข้าถึงอินเทอร์เน็ต

การกำหนดค่าเริ่มต้นของคุณดูดี ตามที่คุณพบ คุณไม่ต้องการเปลี่ยน pod resolv.conf เนื่องจากจำเป็นต้องใช้บริการ coredns ภายในคลัสเตอร์สำหรับการค้นหา DNS ในเครื่อง บริการ coredns ควรสามารถส่งต่อคำขอ dns ไปยังตัวแก้ไขที่กำหนดค่าไว้ใน k8s-master ของคุณ /etc/resolv.conf. ดูเหมือนว่าอาจเป็นปัญหากับการเข้าถึงอินเทอร์เน็ตของเซิร์ฟเวอร์ k8s-master หรือกับเครือข่าย virtualboxฉันโคลน repo ของคุณและสามารถแก้ไข internet DNS จากพ็อดที่ทำงานบนคลัสเตอร์ตามที่คาดไว้

หากคุณดูที่การกำหนดค่า coredns คุณจะเห็นว่ามีการตั้งค่าให้ใช้ /etc/resolv.conf สำหรับโดเมนที่ไม่ได้ระบุใดๆ จาก k8s-master คุณสามารถเรียกใช้ได้ kubectl -n kube-system รับ configmap coredns -o yaml เพื่อดูการกำหนดค่า corens จะมีเส้น ซึ่งไปข้างหน้า . /etc/resolv.conf. เดอะ kubernetes เอกสารที่นี่ อธิบายการกำหนดค่าไฟล์ coredns corefile คุณจะพบว่า แก้ไข.conf ใน coredns pod จะเหมือนกับในโฮสต์ หากต้องการตรวจสอบสิ่งนี้ คุณสามารถเรียกใช้ ps -aux | เกรปคอร์เดนส์ เพื่อรับ pid ของหนึ่งในกระบวนการ coredns จากนั้นเรียกใช้ nsenter -t <pid> -n cat /etc/resolv.conf และคุณควรเห็นว่าเนื้อหาเหมือนกับระบบโฮสต์ ควรมีตัวแก้ไขจากเครือข่าย virtualbox คุณสามารถทดสอบตัวแก้ไขนี้จากโฮสต์หรือภายในกระบวนการ coredns เพื่อตรวจสอบว่าสามารถแก้ไข DNS ได้หรือไม่ คุณยังสามารถทดสอบกับตัวแก้ไขของ Google จากภายในกระบวนการ coredns เพื่อดูว่าคุณได้รับอะไร ฉันจะลองค้นหา DNS เช่นเดียวกับการ ping วิธีนี้จะช่วยให้คุณจำกัดสาเหตุของปัญหาให้แคบลงได้ อีกครั้ง ฉันลอง vagrantfile ของคุณบนเซิร์ฟเวอร์ ubuntu 20.04 ใหม่ล่าสุด และใช้งานได้ดี

  1. ในส่วนการค้นหามีโดเมนที่มาจากเครื่องโฮสต์ของฉันที่ทำให้เกิดปัญหา

นี่คือการกำหนดค่าที่คาดไว้เช่นกัน ฉันไม่คิดว่าสิ่งนี้จะทำให้เกิดปัญหา แต่ฉันไม่ทราบการกำหนดค่าที่แน่นอนของคุณหรือสิ่งที่คุณพยายามทำให้สำเร็จ หากวิธีแก้ปัญหากำหนดให้คุณแก้ไขรายการโดเมนการค้นหาในพ็อด ส่วนที่ต้องทำคือใน นโยบาย Pod DNS. หวังว่าการแก้ปัญหาแรกของคุณจะช่วยให้คุณไม่ต้องปรับแต่งสิ่งนี้

Salvatore D'angelo avatar
au flag
สวัสดีไมค์ ขอบคุณมากสำหรับคำตอบที่ละเอียดถี่ถ้วนของคุณ พูดตามตรง ฉันไม่ใช่ผู้เชี่ยวชาญในการแก้ปัญหา DNS (นี่คือจุดบกพร่องที่ฉันควรจัดการ) และฉันต้องการเวลาในการวิเคราะห์และทดสอบความคิดเห็นของคุณ ในขณะนี้ ฉันสามารถโหวตคำตอบของคุณเท่านั้น และเราจะกลับมาหากมีข้อสงสัย
Salvatore D'angelo avatar
au flag
สวัสดี ไมค์ แฟรงค์ หลังจากที่ไม่ได้เจอกันนาน ฉันยังคงอยู่ที่นี่พร้อมกับปัญหา คุณช่วยบอกฉันหน่อยได้ไหมว่าต้องทำอย่างไรเพื่อเขียนทับส่วนคำสั่งการค้นหาของฉันใน Pod /etc/resolve.conf ฉันพยายามใช้ dnsConfig กับส่วนคำสั่งการค้นหา แต่สุดท้ายแล้ว โดเมนพิเศษที่มาจาก VirtualBox ก็ยังอยู่ที่นั่น มีวิธีใช้เฉพาะที่ฉันระบุใน dnsConfig โดยไม่ต้องใช้ K8 ผสมกับโฮสต์ Vagrant/VirtualBox หรือไม่

โพสต์คำตอบ

คนส่วนใหญ่ไม่เข้าใจว่าการถามคำถามมากมายจะปลดล็อกการเรียนรู้และปรับปรุงความสัมพันธ์ระหว่างบุคคล ตัวอย่างเช่น ในการศึกษาของ Alison แม้ว่าผู้คนจะจำได้อย่างแม่นยำว่ามีคำถามกี่ข้อที่ถูกถามในการสนทนา แต่พวกเขาไม่เข้าใจความเชื่อมโยงระหว่างคำถามและความชอบ จากการศึกษาทั้ง 4 เรื่องที่ผู้เข้าร่วมมีส่วนร่วมในการสนทนาด้วยตนเองหรืออ่านบันทึกการสนทนาของผู้อื่น ผู้คนมักไม่ตระหนักว่าการถามคำถามจะมีอิทธิพลหรือมีอิทธิพลต่อระดับมิตรภาพระหว่างผู้สนทนา