Những bài viết ngắn ngọn chia sẻ về Kubernetes Tips
Vấn đề
Nếu ta truy vấn DNS của một Domain mà không phải là Fully Qualified Domain Name (FQDN) thì core-dns
sẽ duyệt qua toàn bộ đường dẫn tìm kiếm cho tới khi tìm được. Theo tiêu chuẩn của DNS thì một Domain được xem là FQDN khi số lượng dots (.)
của domain đó bằng với giá trị ndot
hoặc có dấu .
ở cuối.
Mặc định giá trị ndot
trong EKS là 5. Do đó ví dụ nếu ta tìm DNS của một Domain tên là amazon.com
thì core-dns
nó sẽ truy vấn như sau theo thứ tự từ trên xuống:
amazon.com.default.svc.cluster.local
amazon.com.svc.cluster.local
amazon.com.cluster.local
amazon.com.
Nếu số lượng Pod ít thì không vấn đề gì, nhưng nếu hệ thống của ta ngày càng mở rộng ra thì sẽ dẫn tới số lượng truy vấn DNS rất lớn ⇒ core-dns
bị chậm hoặc lỗi. Ví dụ trong bài này khi số lượng Pod lên tới 10,000 thì thời gian peak lên tới 3000ms.
Giải pháp
Một giải pháp đơn giản cho vấn đề này là ta thêm dấu .
ở cuối Domain, lúc này thì Domain của ta sẽ ở dạng FQDN ⇒ core-dns
không cần phải duyệt qua toàn bộ đường dẫn tìm kiếm. Ví dụ thay vì để là amazon.com
ta hãy để amazon.com.
. Lúc này thì thời gian truy vấn DNS trong Pod của ta sẽ giảm tới 70%.
Thêm một giải pháp nữa là ta sẽ sử dụng NodeLocal DNSCache để tránh Pod chạy quá nhiều truy vấn DNS.
Nếu bài viết có gì sai hoặc cần cập nhật thì liên hệ Admin.
Tham gia nhóm chat của DevOps VN tại Telegram.
Kém tiếng Anh và cần nâng cao trình độ giao tiếp: Tại sao bạn học không hiệu quả?