Score:1

CoreDNS ล้มเหลวเนื่องจากการวนซ้ำ: จะป้อน kubelet ด้วย resolvConf ที่เหมาะสมได้อย่างไร

ธง in

นี่คือจุดเริ่มต้นของการตรวจสอบ: CoreDNS ไม่สามารถทำงานได้นานกว่าสองสามวินาที ทำให้เกิดข้อผิดพลาดต่อไปนี้:

$ kubectl รับพ็อด --all-namespaces
NAMESPACE NAME สถานะพร้อมเริ่มอายุใหม่
ingress-nginx ingress-nginx-controller-8xcl9 1/1 กำลังทำงาน 0 11h
ingress-nginx ingress-nginx-controller-hwhvk 1/1 กำลังทำงาน 0 11h
ingress-nginx ingress-nginx-controller-xqdqx 1/1 Running 2 (10h ago) 11h
kube-system calico-kube-controllers-684bcfdc59-cr7hr 1/1 กำลังทำงาน 0 11h
kube-system calico-node-62p58 1/1 กำลังดำเนินการ 2 (10 ชม. ที่แล้ว) 11 ชม.
kube-system calico-node-btvdh 1/1 ทำงาน 0 11 ชม
kube-system calico-node-q5bkr 1/1 ทำงาน 0 11 ชม
ระบบ kube coredns-8474476ff8-dnt6b 0/1 CrashLoopBackOff 1 (3 วินาทีที่แล้ว) 5 วินาที
kube-system coredns-8474476ff8-ftcbx 0/1 ข้อผิดพลาด 1 (2 วินาทีที่แล้ว) 5 วินาที
kube-system dns-autoscaler-5ffdc7f89d-4tshm 1/1 กำลังทำงาน 2 (10 ชั่วโมงที่แล้ว) 11 ชั่วโมง
kube-system kube-apiserver-hyzio 1/1 รัน 4 (10 ชม. ที่แล้ว) 11 ชม.
kube-system kube-controller-manager-hyzio 1/1 Running 4 (10 ชม. ที่แล้ว) 11 ชม.
ระบบ kube kube-proxy-2d8ls 1/1 ทำงาน 0 11 ชม
kube-system kube-proxy-c6c4l 1/1 รัน 4 (10 ชม. ที่แล้ว) 11 ชม.
ระบบ kube kube-proxy-nzqdd 1/1 ทำงาน 0 11 ชม
kube-system kube-scheduler-hyzio 1/1 รัน 5 (10 ชม. ที่แล้ว) 11 ชม.
ระบบ kube kubernetes-dashboard-548847967d-66dwz 1/1 กำลังทำงาน 0 11h
ระบบ kube kubernetes-metrics-scraper-6d49f96c97-r6dz2 1/1 กำลังทำงาน 0 11 ชม.
ระบบ kube nginx-proxy-dyzio 1/1 ทำงาน 0 11 ชม
ระบบ kube nginx-proxy-zyzio 1/1 ทำงาน 0 11 ชม
ระบบ kube nodelocaldns-g9wxh 1/1 ทำงาน 0 11 ชม
kube-system nodelocaldns-j2qc9 1/1 กำลังทำงาน 4 (10 ชั่วโมงที่แล้ว) 11 ชั่วโมง
ระบบ kube nodelocaldns-vk84j 1/1 ทำงาน 0 11 ชม
kube-system Registry-j5prk 1/1 ทำงาน 0 11 ชม
kube-system Registry-proxy-5wbhq 1/1 ทำงาน 0 11 ชม
kube-system Registry-proxy-77lqd 1/1 ทำงาน 0 11 ชม
kube-system Registry-proxy-s45p4 1/1 กำลังทำงาน 2 (10 ชั่วโมงที่แล้ว) 11 ชั่วโมง

kubectl อธิบาย บนฝักนั้นไม่ได้นำมาซึ่งภาพมากนัก:

เหตุการณ์:
  พิมพ์อายุเหตุผลจากข้อความ
  ---- ------ ---- ---- -------
  ตัวกำหนดตารางเวลาเริ่มต้น 67s ปกติ กำหนด kube-system/coredns-8474476ff8-dnt6b ให้กับ zyzio สำเร็จแล้ว
  Normal Pulled 25s (x4 over 68s) kubelet อิมเมจคอนเทนเนอร์ "k8s.gcr.io/coredns/coredns:v1.8.0" มีอยู่แล้วในเครื่อง
  ปกติสร้าง 25 วินาที (x4 มากกว่า 68 วินาที) kubelet สร้างคอนเทนเนอร์ coredns
  ปกติเริ่มต้น 25 วินาที (x4 มากกว่า 68 วินาที) kubelet เริ่มต้นคอนเทนเนอร์ coredns
  คำเตือน BackOff 6s (x11 มากกว่า 66s) kubelet Back-off การรีสตาร์ทคอนเทนเนอร์ล้มเหลว

แต่การดูบันทึกได้:

$ kubectl บันทึก coredns-8474476ff8-dnt6b -n kube-system
.:53
[INFO] ปลั๊กอิน/โหลดซ้ำ: กำลังรันการกำหนดค่า MD5 = 5b233a0166923d642fdbca0794b712ab
CoreDNS-1.8.0
ลินุกซ์/amd64, go1.15.3, 054c9ae
[FATAL] ปลั๊กอิน/ลูป: ตรวจพบลูป (127.0.0.1:49048 -> :53) สำหรับโซน "." โปรดดู https://coredns.io/plugins/loop#troubleshootingข้อความค้นหา: "HINFO 2906344495550081187.9117452939332601176"

เป็นเรื่องดีที่มีการเชื่อมโยงเอกสารการแก้ไขปัญหา! ฉันเริ่มเปิดดูหน้านั้นและค้นพบว่าแท้จริงแล้วเป็นของฉัน /etc/resolv.conf มี IP ท้องถิ่นที่มีปัญหา เนมเซิร์ฟเวอร์ 127.0.0.53.

นอกจากนี้ฉันพบว่า จริง DNS IP ใน /run/systemd/resolve/resolv.confแต่ตอนนี้คำถามคือ: วิธีดำเนินการตามที่อธิบายไว้ในเอกสารประกอบการแก้ไขปัญหา โดยกล่าวว่า:

เพิ่มสิ่งต่อไปนี้ใน kubelet config yaml ของคุณ: resolvConf: (หรือผ่าน command line flag --resolv-conf เลิกใช้แล้วใน 1.10) ârealâ resolv.conf ของคุณคืออันที่มี IP จริงของเซิร์ฟเวอร์อัพสตรีมของคุณ และไม่มีที่อยู่ในโลคัล/ลูปแบ็ค แฟล็กนี้บอกให้ kubelet ส่ง resolv.conf สำรองไปยัง Pods สำหรับระบบที่ใช้ systemd-resolved โดยทั่วไป /run/systemd/resolve/resolv.conf จะเป็นตำแหน่งของ ârealâ resolv.conf แม้ว่าสิ่งนี้อาจแตกต่างกันไปขึ้นอยู่กับการกระจายของคุณ

ดังนั้น คำถามคือ:

  • วิธีค้นหาหรือตำแหน่งที่จะสร้าง kubelet config yaml ที่กล่าวถึง
  • ฉันควรระบุระดับใด แก้ไขคอนเฟอเรนซ์ มูลค่าและ
  • รับหลายค่าได้ไหม ฉันกำหนดเนมเซิร์ฟเวอร์สองตัว ควรกำหนดให้เป็นรายการแยกต่างหากหรือเป็นอาร์เรย์
Score:1
ธง us

/etc/resolv.conf/ อยู่ในแต่ละโหนดของคุณ คุณสามารถแก้ไขได้โดย สสสเข้าไปในโหนด
จากนั้นคุณต้องเริ่มต้นใหม่ คูเบเลต เพื่อให้การเปลี่ยนแปลงมีผล

sudo systemctl รีสตาร์ท kubelet

(หากไม่ได้ผล ให้รีสตาร์ทโหนดของคุณด้วย sudo รีบูต)


/home/kubernetes/kubelet-config.yaml (ซึ่งอยู่ในแต่ละโหนดของคุณด้วย) ไฟล์มีการกำหนดค่าของ kubelet คุณสามารถสร้างใหม่ resolv.conf ไฟล์และชี้ไปที่ไฟล์ แก้ไขคอนเฟอเรนซ์ สนาม

apiVersion: kubelet.config.k8s.io/v1beta1
...
ชนิด: KubeletConfiguration
...
resolvConf: <ตำแหน่งของไฟล์>

สิ่งสำคัญ: การกำหนดค่าใหม่จะใช้กับพ็อดที่สร้างขึ้นหลังการอัปเดตเท่านั้นขอแนะนำให้ระบายโหนดของคุณก่อนที่จะเปลี่ยนการกำหนดค่า


รับหลายค่าได้ไหม ฉันกำหนดเนมเซิร์ฟเวอร์สองตัว ควรกำหนดให้เป็นรายการแยกต่างหากหรือเป็นอาร์เรย์

การกำหนดค่า Kubelet สถานะเอกสาร แก้ไขคอนเฟอเรนซ์ เป็นประเภท สตริงดังนั้นจึงอาจยอมรับเพียงค่าเดียวเท่านั้น

AbreQueVoy avatar
in flag
การรีสตาร์ทเฉพาะ kubelet ไม่ได้ช่วยอะไร ฉันต้องทำ `sudo reboot` ที่โหดเหี้ยมของโหนด แต่ด้วยคำแนะนำของคุณ ในที่สุดมันก็ใช้งานได้อย่างที่ควรจะเป็น

โพสต์คำตอบ

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