Score:1

ปัญหา DNS ในกลุ่มของโหนดที่อนุญาตเท่านั้นบน GKE: จุดสิ้นสุดของบริการ kube-dns เก็บพ็อดที่ล้มเหลว

ธง br

ฉันมีคลัสเตอร์ GKE k8s (k8s 1.22) ที่ประกอบด้วยโหนดที่ว่าง เท่านั้นซึ่งรวมถึงบริการที่สำคัญ เช่น kube-dns เป็นเครื่อง dev ที่สามารถทนต่อนาทีที่เสียต่อวัน ทุกครั้งที่ปิดโหนดซึ่งโฮสต์พ็อด kube-dns ฉันพบปัญหาการแก้ไข DNS ที่ยังคงอยู่จนกว่าฉันจะลบพ็อดที่ล้มเหลว (ใน 1.21 พ็อดจะอยู่ที่ "สถานะ: ล้มเหลว" / "เหตุผล: ปิดเครื่อง" จนกว่าจะลบด้วยตนเอง) .

แม้ว่าฉันคาดว่าจะมีปัญหาบางอย่างบนโหนดที่ยอมให้มีการขัดจังหวะในขณะที่กำลังนำกลับมาใช้ใหม่ แต่ฉันคาดว่าสิ่งนี้จะซ่อมแซมตัวเองได้ภายในไม่กี่นาที เหตุผลเบื้องหลังสำหรับปัญหาถาวรดูเหมือนว่าจะไม่ได้ลบพ็อดที่ล้มเหลวออกจาก k8s บริการ / จุดสิ้นสุด. นี่คือสิ่งที่ฉันเห็นในระบบ:

สถานะของพ็อดผ่าน kubectl -n ระบบ kube รับ po -l k8s-app=kube-dns

สถานะพร้อมชื่อเริ่มอายุใหม่
kube-dns-697dc8fc8b-47rxd 4/4 สิ้นสุด 0 43h
kube-dns-697dc8fc8b-mkfrp 4/4 วิ่ง 0 78m
kube-dns-697dc8fc8b-zfvn8 4/4 กำลังดำเนินการ 0 19h

IP ของพ็อดที่ล้มเหลวคือ 192.168.144.2 - และยังคงแสดงเป็นหนึ่งในจุดสิ้นสุดของบริการ:

kubectl -n kube-system อธิบาย ep kube-dns นำสิ่งนี้:

ชื่อ: kube-dns
เนมสเปซ: ระบบ kube
ป้ายกำกับ: addonmanager.kubernetes.io/mode=กระทบยอด
              k8s-app=kube-dns
              kubernetes.io/cluster-service=true
              kubernetes.io/name=KubeDNS
คำอธิบายประกอบ: endpoints.kubernetes.io/last-change-trigger-time: 2022-02-21T10:15:54Z
ชุดย่อย:
  ที่อยู่: 192.168.144.2,192.168.144.7,192.168.146.29
  ที่อยู่ NotReady: <ไม่มี>
  พอร์ต:
    ชื่อพอร์ตโปรโตคอล
    ---- ---- --------
    DNS-TCP 53 TCP
    DNS 53 UDP

เหตุการณ์: <ไม่มี>

ฉันรู้ว่ามีคนอื่นแก้ไขปัญหาเหล่านี้โดย การตั้งเวลา kube-dns ไปยังพ็อดอื่นๆแต่ฉันอยากจะทำการรักษาด้วยตนเองแทน เนื่องจากความล้มเหลวของโหนดยังคงสามารถเกิดขึ้นได้บนโหนดที่ไม่สามารถแก้ไขได้ ซึ่งมีโอกาสน้อยกว่า

คำถามของฉัน:

  • เหตุใดพ็อดที่ล้มเหลวจึงยังคงแสดงเป็นหนึ่งในจุดสิ้นสุดของบริการ แม้ผ่านไปหลายชั่วโมงหลังจากโหนดเริ่มต้นล้มเหลว
  • ฉันจะทำอย่างไรเพื่อลดปัญหา (นอกเหนือจากการเพิ่มโหนดที่ไม่ชั่วคราว)

ดูเหมือนว่า kube-dns ในการปรับใช้เริ่มต้นใน GKE ไม่มีโพรบความพร้อมแนบกับ dnsmasq (พอร์ต 53) ซึ่งเป็นเป้าหมายในบริการ kube-dns และสิ่งนั้นสามารถแก้ปัญหาได้ - แต่ฉันสงสัยว่าไม่ใช่ มีเหตุผลที่ฉันยังไม่เข้าใจ

แก้ไข: เห็นได้ชัดว่าสิ่งนี้เกิดขึ้น ไม่ เกิดขึ้นที่ 1.21.6-gke.1500 (แชนเนลปกติ) แต่เกิดขึ้นที่ 1.22.6-gke.1500 (แชนเนลอย่างรวดเร็ว) ฉันไม่มีคำอธิบายที่ดี แต่ถึงแม้วันนี้จะมีพ็อดที่ล้มเหลวอยู่บ้าง แต่บริการ kube-dns ก็มีเฉพาะพ็อดที่ใช้งานได้เท่านั้น

lena_punkt avatar
br flag
อัปเดต: ดูเหมือนข้อบกพร่องของ k8 ที่จะได้รับการแก้ไขใน 1.22 ในภายหลัง: https://github.com/kubernetes/kubernetes/issues/108594 - ฉันจะอัปเดตพร้อมคำตอบสำหรับคำถามของฉันเองเมื่อฉันตรวจสอบการทำงานนี้แล้ว Florian ถ้าคุณอ่านข้อความนี้ได้ ถ้าคุณแสดงความคิดเห็นที่ถูกลบไปแล้วเป็นคำตอบสำหรับโพสต์นี้ ฉันสามารถยอมรับเป็นคำตอบในภายหลังและคุณจะได้รับเครดิต
Score:0
ธง lv

ไม่แนะนำให้ใช้โหนดที่เว้นว่างไว้สำหรับการเรียกใช้ปริมาณงานที่สำคัญ เช่น kube-dns (1) ดังนั้นสถานการณ์เช่นนี้คาดว่าจะเกิดขึ้น

คุณสามารถลองบรรเทาปัญหาได้โดยการทำเครื่องหมายพ็อดว่าวิกฤต (2) โดยใช้การจัดเตรียมโหนดอัตโนมัติ (3) หรือ PodDisruptionBudget (4).
มีข้อมูลเพิ่มเติมเกี่ยวกับหัวข้อนี้ในเอกสารนี้ (5).

นอกจากนี้ คำแนะนำบางอย่างได้ส่งไปยัง Google แล้ว (6).

หากวิธีการเหล่านี้ไม่สามารถแก้ไขปัญหาของคุณได้ คุณสามารถรายงานได้ทาง ติดตามปัญหาสาธารณะ.

lena_punkt avatar
br flag
ถูกต้อง การเพิ่ม Node Pool ด้วยโหนดมาตรฐานจะทำให้สิ่งนี้มีโอกาสน้อยลง แต่โหนดเหล่านั้นก็ยังล้มเหลวได้ และฉันไม่เห็นว่าสิ่งนี้จะไม่เกิดขึ้นในลักษณะเดียวกันได้อย่างไร เช่น เมื่อ Availability Zone ล้มเหลว นั่นเป็นเหตุผลหลักที่ผมถามในตอนแรก การแทรกแซงของมนุษย์ก็จำเป็นสำหรับกรณีนั้นเช่นกัน จริงไหม?
Sergiusz avatar
lv flag
ฉันไม่เคยเห็นสถานการณ์ดังกล่าวและไม่พบรายงานเกี่ยวกับพฤติกรรมดังกล่าวในตัวติดตามปัญหา แต่ถ้าคุณพบปัญหานี้บนโหนดที่ไม่สามารถแก้ไขได้ คุณควรรายงานสิ่งนี้ไปยัง Google
Score:0
ธง np

มันเริ่มเกิดขึ้นกับ env (preemptible nodes บน gke) ของฉันเช่นกัน และเกิดขึ้นกับการปรับใช้ทั้งหมด แต่ kube-dns นั้นสำคัญที่สุด ผมว่าน่าจะเกี่ยวนะครับ revisionHistoryLimit พารามิเตอร์. ค่าเริ่มต้นคือ 10 ดังนั้นเรพลิเคชันเก่าที่มีจำนวนไม่เกิน 10 จะแสดงขึ้นในช่วงระยะเวลาหนึ่ง ฉันได้ตั้งค่าเป็น 0 และคาดว่าจะแทนที่โหนด มาดูกัน :)

โพสต์คำตอบ

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