ฉันมีคลัสเตอร์ 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 ก็มีเฉพาะพ็อดที่ใช้งานได้เท่านั้น