Tôi có một cụm GKE k8s (k8s 1.22) bao gồm các nút được ưu tiên chỉ có, bao gồm các dịch vụ quan trọng như kube-dns. Đó là một cỗ máy dành cho nhà phát triển có thể chịu được vài phút hỏng mỗi ngày. Mỗi khi một nút lưu trữ nhóm kube-dns bị tắt, tôi gặp phải sự cố phân giải DNS vẫn tồn tại cho đến khi tôi xóa nhóm bị lỗi (trong 1.21, các nhóm vẫn ở trạng thái "Trạng thái: Không thành công"/"Lý do: Tắt máy" cho đến khi bị xóa thủ công) .
Mặc dù tôi mong đợi một số sự cố trên các nút được ưu tiên trong khi chúng đang được tái chế, nhưng tôi mong đợi điều này sẽ tự sửa chữa sau vài phút. Lý do cơ bản cho các sự cố dai dẳng dường như là do nhóm bị lỗi không bị xóa khỏi k8s Dịch vụ
/ điểm cuối
. Đây là những gì tôi có thể thấy trong hệ thống:
Tình trạng của các nhóm thông qua kubectl -n kube-system get po -l k8s-app=kube-dns
TÊN TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI
kube-dns-697dc8fc8b-47rxd 4/4 Chấm dứt 0 43h
kube-dns-697dc8fc8b-mkfrp 4/4 Chạy 0 78m
kube-dns-697dc8fc8b-zfvn8 4/4 Chạy 0 19h
IP của nhóm bị lỗi là 192.168.144.2 - và nó vẫn được liệt kê là một trong những điểm cuối của dịch vụ:
kubectl -n kube-system description ep kube-dns
mang lại điều này:
Tên: kube-dns
Không gian tên: hệ thống kube
Nhãn: addonmanager.kubernetes.io/mode=Reconcile
k8s-app=kube-dns
kubernetes.io/cluster-service=true
kubernetes.io/name=KubeDNS
Chú thích: endpoints.kubernetes.io/last-change-trigger-time: 2022-02-21T10:15:54Z
Tập hợp con:
Địa chỉ: 192.168.144.2,192.168.144.7,192.168.146.29
NotReadyAddresses: <none>
Cổng:
Giao thức cổng tên
---- ---- --------
dns-tcp 53 TCP
dns 53 UDP
Sự kiện: <không có>
Tôi biết những người khác đã giải quyết những vấn đề này bằng cách Lập lịch kube-dns cho các nhóm khác, nhưng tôi muốn thực hiện việc tự phục hồi này thay vì lỗi nút vẫn có thể xảy ra trên các nút không được ưu tiên, chúng chỉ ít xảy ra hơn.
Những câu hỏi của tôi:
- Tại sao nhóm bị lỗi vẫn được liệt kê là một trong những điểm cuối của dịch vụ, thậm chí hàng giờ sau khi nút ban đầu bị lỗi?
- Tôi có thể làm gì để giảm thiểu vấn đề (ngoài việc thêm một số nút không phù hợp)?
Có vẻ như kube-dns trong triển khai mặc định trong GKE không có đầu dò sẵn sàng được đính kèm với dnsmasq (cổng 53), được nhắm mục tiêu trong dịch vụ kube-dns và điều đó có thể giải quyết vấn đề - nhưng tôi nghi ngờ nó không phải là ở đó vì một lý do mà tôi chưa hiểu.
CHỈNH SỬA: Rõ ràng điều này không không phải xảy ra trên 1.21.6-gke.1500 (kênh thông thường), nhưng xảy ra trên 1.22.6-gke.1500 (kênh nhanh). Tôi không có lời giải thích hay, nhưng mặc dù có một vài nhóm bị lỗi ngày hôm nay, dịch vụ kube-dns chỉ chứa những nhóm đang hoạt động.