Email Doanh NghiệpSSLFirewall Anti DDoS

NỘI DUNG

Banner blog lễ 30.4 và 1.5

DNS Kubernetes là gì? Thành phần và cách hoạt động của DNS Kubernetes

Hưng Nguyễn

Đã kiểm duyệt nội dung

Ngày đăng:22/04/2026
Lượt xem

Quy trình sản xuất nội dung

Đánh giá

[esi kkstarratings cache="private" ttl="3"]

Khi debug lỗi service không thể kết nối với nhau trong Kubernetes, mình từng mất khá nhiều thời gian mới nhận ra nguyên nhân nằm ở DNS nội bộ. Sau khi hiểu rõ cách DNS Kubernetes hoạt động, việc truy cập giữa các Pod và Service trở nên rõ ràng, dễ kiểm soát và hạn chế lỗi hơn hẳn. Trong bài viết này, mình sẽ chia sẻ lại góc nhìn thực tế về DNS Kubernetes, các thành phần liên quan và cách nó vận hành trong hệ thống.

Những điểm chính

Đối với mình, khi vận hành hệ thống trên Kubernetes, DNS không còn là một hạ tầng nền mà trở thành yếu tố quyết định trực tiếp đến khả năng kết nối giữa các service. Để giúp bạn nắm rõ hơn, bài viết dưới đây sẽ cung cấp các nội dung gồm:

  • Khái niệm: Hiểu rõ DNS Kubernetes là hệ thống phân giải tên miền nội bộ được tích hợp sẵn, đóng vai trò then chốt trong việc Service Discovery. 
  • Vai trò của DNS Kubernetes: Nắm được tầm quan trọng của DNS trong việc đảm bảo kết nối nội bộ ổn định và liền mạch giữa các thành phần.
  • Những thành phần của DNS Kubernetes: Hiểu rõ các thành phần như CoreDNS và cách chúng phối hợp để xử lý truy vấn DNS.
  • Lợi ích khi sử dụng DNS Kubernetes: Nhìn rõ giá trị về tự động hóa, khả năng mở rộng và giảm thiểu cấu hình thủ công khi quản lý service.
  • Cách thức hoạt động của DNS Kubernetes: Biết được cách request DNS được xử lý và trả kết quả trong môi trường Kubernetes.
  • Hướng dẫn cách sử dụng DNS Kubernetes: Đây là phần thực hành giúp bạn áp dụng DNS vào việc quản lý và kết nối service trong thực tế.
  • Hướng dẫn xử lý các sự cố DNS Kubernetes thường gặp: Hiểu cách kiểm tra, debug và xử lý lỗi DNS để đảm bảo hệ thống luôn ổn định.
  • So sánh KubeDNS và CoreDNS: Nắm được sự khác biệt giữa hai giải pháp DNS phổ biến trong Kubernetes để lựa chọn phù hợp.
  • Biết thêm Vietnix là đơn vị cung cấp dịch vụ hosting, VPS và Cloud uy tín, chất lượng.
  • Câu hỏi thường gặp: Giải đáp các thắc mắc liên quan đến DNS Kubernetes.
những điểm chính

DNS Kubernetes là gì?

DNS Kubernetes là hệ thống phân giải tên miền nội bộ được tích hợp sẵn, đóng vai trò then chốt trong việc Service Discovery. Hệ thống này tự động ánh xạ tên các Service và Pod thành địa chỉ IP tương ứng, cho phép các thành phần bên trong Cluster giao tiếp với nhau ổn định thông qua tên miền thay vì phụ thuộc vào các địa chỉ IP động dễ thay đổi.

DNS Kubernetes là hệ thống phân giải tên miền nội bộ được tích hợp sẵn
DNS Kubernetes là hệ thống phân giải tên miền nội bộ được tích hợp sẵn

Sau khi tìm hiểu về DNS Kubernetes, có thể thấy hạ tầng triển khai đóng vai trò quan trọng trong việc đảm bảo hiệu suất và độ ổn định của toàn bộ hệ thống. Với các môi trường yêu cầu khả năng mở rộng cao, tính sẵn sàng và quản lý tài nguyên linh hoạt, Enterprise Cloud tại Vietnix là lựa chọn phù hợp để vận hành Kubernetes hiệu quả. Dịch vụ cung cấp nền tảng hạ tầng đáp ứng tốt các yêu cầu này, giúp doanh nghiệp triển khai và vận hành hệ thống một cách ổn định và nhất quán. Liên hệ ngay!

Vai trò của DNS Kubernetes

DNS trong Kubernetes đóng vai trò cốt lõi giúp các thành phần trong cluster giao tiếp ổn định mà không phụ thuộc IP. Dưới đây là những vai trò chính:

  • Phân giải tên dịch vụ tự động: Khi tạo một Service, Kubernetes gán ngay tên miền theo định dạng ..svc.cluster.local, ví dụ: demo-service.demo-namespace.svc.cluster.local. CoreDNS là công cụ cốt lõi giúp theo dõi API Kubernetes để cập nhật hồ sơ DNS động theo thời gian thực.
  • Hỗ trợ khám phá dịch vụ (Service Discovery): Trong môi trường Kubernetes động, nơi Pod thường xuyên được tạo mới, xóa hoặc scale, DNS đảm bảo tên miền luôn trỏ đúng IP hiện tại, tránh gián đoạn kết nối.
DNS Kubernetes giúp hỗ trợ khám phá dịch vụ
DNS Kubernetes giúp hỗ trợ khám phá dịch vụ

Những thành phần của DNS Kubernetes

Hệ thống DNS trong Kubernetes gồm các thành phần chủ chốt, góp phần vào khả năng phân giải tên miền và khám phá dịch vụ trong cluster một cách tự động và hiệu quả.

  • CoreDNS: Được xem là máy chủ DNS chính, CoreDNS đảm nhiệm việc tạo, cập nhật và xóa các bản ghi DNS cho các Service và Pod, đồng thời theo dõi API Kubernetes để phản ánh các thay đổi ngay lập tức, giúp cho giao tiếp trong cluster luôn chính xác.
  • Cluster DNS cùng Cluster IP: Mỗi Service được gán một tên miền theo định dạng ..svc.cluster.local, trỏ đến địa chỉ IP nội bộ ổn định, giúp các ứng dụng dễ dàng kết nối mà không cần phụ thuộc vào địa chỉ IP động.
  • Tên miền mặc định: Thông thường, tên miền của cluster là cluster.local, nền tảng để các tên miền phụ của dịch vụ và Pod hoạt động dựa trên cấu trúc phân cấp rõ ràng, đảm bảo tính nhất quán trong hệ thống DNS nội bộ.
Những thành phần của DNS Kubernetes
Những thành phần của DNS Kubernetes

Lợi ích khi sử dụng DNS Kubernetes

Việc sử dụng DNS Kubernetes mang lại nhiều lợi ích vượt trội, giúp tối ưu hóa quản lý và mở rộng ứng dụng trong môi trường container động. Chi tiết như sau:

  • Khám phá dịch vụ tự động: DNS Kubernetes cho phép các ứng dụng tự động phát hiện và kết nối lẫn nhau mà không cần cấu hình thủ công, giúp hệ thống linh hoạt hơn trong môi trường đa dịch vụ.
  • Đơn giản hóa mạng lưới: Bằng cách trừu tượng hóa địa chỉ dịch vụ qua tên miền, DNS loại bỏ nhu cầu hardcode IP động, giảm lỗi và tăng tính di động giữa các cluster.
  • Mở rộng quy mô mượt mà: Khi dịch vụ scale up/down, DNS tự động cập nhật mapping cho Pod và Service, đảm bảo giao tiếp mạng liền mạch mà không gián đoạn.
  • Giám sát sức khỏe dịch vụ: DNS tích hợp kiểm tra health check, chỉ phân giải tên miền cho các dịch vụ khỏe mạnh, nâng cao độ tin cậy và tự động loại bỏ instance lỗi.
  • Cấu hình dễ dàng: Kubernetes tự động quản lý toàn bộ bản ghi DNS cho dịch vụ, giảm thiểu lỗi thủ công và phức tạp triển khai.
Lợi ích khi sử dụng DNS Kubernetes
Lợi ích khi sử dụng DNS Kubernetes

Cách thức hoạt động của DNS Kubernetes

DNS Kubernetes vận hành như một hệ thống phân giải tên miền thông minh, tự động hóa việc khám phá và kết nối dịch vụ trong cluster, dựa trên CoreDNS làm lõi trung tâm. Chi tiết cách thức hoạt động của DNS Kubernetes như sau:

  • Tự động gán tên miền chuẩn hóa: Ngay khi tạo Service (như my-service), Kubernetes sinh bản ghi DNS theo subdomain của tên cluster (mặc định cluster.local), ví dụ my-service.default.svc.cluster.local, trỏ đến ClusterIP ổn định mà không cần can thiệp thủ công.
  • Quy trình phân giải tên động: Pod gửi query DNS đến CoreDNS, công cụ này theo dõi Kubernetes API, tra cứu và trả về ClusterIP chính xác của Service, đảm bảo kết nối ngay lập tức dù Pod IP thay đổi.
  • Khám phá dịch vụ liền mạch: Các ứng dụng tự tìm và giao tiếp qua tên dự đoán được (Pod/Service đều có DNS name cố định dưới cluster.local), loại bỏ phụ thuộc IP động, tăng tính linh hoạt mở rộng cluster.
Cách thức hoạt động của DNS Kubernetes
Cách thức hoạt động của DNS Kubernetes

1. Tạo và kiểm tra bản ghi DNS cho Service

Khi tạo Service trong Kubernetes, hệ thống tự động sinh bản ghi DNS theo định dạng ..svc.cluster.local. Ví dụ, Service my-service trong namespace default sẽ có tên miền là my-service.default.svc.cluster.local. Mã YAML tạo Service:

apiVersion: v1
kind: Service
metadata:
  name: my-service
  namespace: default
spec:
  selector:
    app: my-app
  ports:
    - protocol: TCP
      port: 80

Tạo file pod.yaml
apiVersion: v1
kind: Pod
metadata:
  name: dnsutils
  namespace: default
spec:
  containers:
  - name: dnsutils
    image: registry.k8s.io/e2e-test-images/jessie-dnsutils:1.3
    command:
      - sleep
      - "infinity"
    imagePullPolicy: IfNotPresent
  restartPolicy: Always

Sau đó, bạn, bạn cũng có thể kiểm tra bằng lệnh:

kubectl exec -i -t dnsutils -- nslookup my-service.default.svc.cluster.local
Output của lệnh kubectl exec -i
Output của lệnh kubectl exec -i

Kết quả trả về địa chỉ ClusterIP tương ứng.

2. Khám phá Service qua Pod

Pod trong cluster được cấu hình sẵn để sử dụng DNS Kubernetes, bạn có thể truy vấn Service qua tên miền mà không cần IP. Kiểm tra cấu hình DNS của Pod bạn dùng lệnh:

kubectl exec -ti dnsutils -- cat /etc/resolv.conf
Output của kubectl exec -ti dnsutils -- cat /etc/resolv.conf
Output của kubectl exec -ti dnsutils — cat /etc/resolv.conf

Kết quả hiển thị danh sách search domain và nameserver nội bộ, ví dụ:

search default.svc.cluster.local svc.cluster.local cluster.local
nameserver 10.0.0.10

Truy vấn Service trong cùng namespace bạn dùng lệnh:

kubectl exec -i -t dnsutils -- nslookup my-service
Output của kubectl exec -i -t dnsutils -- nslookup my-service
Output của kubectl exec -i -t dnsutils — nslookup my-service

Truy vấn Service ở namespace khác:

kubectl exec -i -t dnsutils -- nslookup my-service.other-namespace
Output của kubectl exec -i -t dnsutils -- nslookup my-service.other-namespace
Output của kubectl exec -i -t dnsutils — nslookup my-service.other-namespace

3. Cấu hình DNS tùy chỉnh cho Pod

Pod có thể ghi đè DNS settings bằng trường dnsConfig và dnsPolicy trong PodSpec. Ví dụ cấu hình Pod với DNS tùy chỉnh:

apiVersion: v1
kind: Pod
metadata:
  name: dns-example
  namespace: default
spec:
  containers:
  - name: test
    image: nginx
  dnsPolicy: "None"
  dnsConfig:
    nameservers:
      - 192.0.2.1
    searches:
      - ns1.svc.cluster-domain.example
      - my.dns.search.suffix
    options:
      - name: ndots
        value: "2"

Pod sẽ sử dụng DNS server và domain tìm kiếm như đã cấu hình.

4. Debug và kiểm tra hoạt động DNS

Để kiểm tra Pod DNS hoạt động bạn dùng lệnh sau:

kubectl exec -i -t dnsutils -- nslookup kubernetes.default
Output của kubectl exec -i -t dnsutils -- nslookup kubernetes.default
Output của kubectl exec -i -t dnsutils — nslookup kubernetes.default

Bạn có thể xem cấu hình DNS của Pod bằng lệnh:

kubectl exec -ti dnsutils -- cat /etc/resolv.conf
Output của kubectl exec -ti dnsutils -- cat /etc/resolv.conf
Output của kubectl exec -ti dnsutils — cat /etc/resolv.conf

Bước 1: Xác minh trạng thái CoreDNS

Trước tiên, bạn cần kiểm tra xem dịch vụ DNS có đang hoạt động không bằng cách kiểm tra trạng thái của CoreDNS. Bạn sử dụng lệnh sau để kiểm tra Service và Pod:

kubectl get service kube-dns -n kube-system
kubectl get pods -l k8s-app=kube-dns -n kube-system

Nếu không thấy Service hoặc Pod không ở trạng thái Running, hệ thống DNS sẽ không hoạt động và cần xem xét khởi động lại hoặc kiểm tra lỗi hệ thống điều khiển.

Bước 2: Kiểm tra log CoreDNS

Lỗi phân giải DNS thường được ghi lại trong log của CoreDNS. Bạn cần dùng lệnh sau để xem log:

kubectl logs -l k8s-app=kube-dns -n kube-system

Nếu log chỉ hiển thị thông báo INFO, hệ thống đang hoạt động bình thường. Nếu xuất hiện cảnh báo hoặc lỗi, bạn cần điều chỉnh cấu hình theo gợi ý trong log.

Bước 3: Kiểm tra quyền truy cập của CoreDNS

CoreDNS cần được cấp quyền RBAC để theo dõi các thay đổi Pod, Service, Endpoint và Namespace. Bạn dùng lệnh sau để kiểm tra:

kubectl describe clusterrole system:coredns -n kube-system

Nếu thiếu quyền list hoặc watch cho các resource, bạn cần cập nhật ClusterRole để bổ sung các quyền này.

Bước 4: Thử nghiệm với container test

Bạn cần khởi tạo một Pod test để kiểm tra DNS có phản hồi đúng không:

kubectl run -it busybox --image busybox:latest
/ # nslookup kubernetes.default

Nếu kết quả trả về địa chỉ IP, DNS hoạt động bình thường. Nếu có lỗi, bạn cần kiểm tra lại cấu hình DNS hoặc network trên Node.

Bước 5: Kiểm tra cấu hình resolv.conf của Pod

Cuối cùng, bạn kiểm tra file cấu hình DNS của Pod để phát hiện lỗi do thiết lập sai:

kubectl exec -it demo-pod -- cat /etc/resolv.conf

Nếu có nameserver hoặc search domain không đúng, bạn cần kiểm tra lại cấu hình dnsConfig trong PodSpec để đảm bảo không ảnh hưởng đến quá trình phân giải tên.

So sánh KubeDNS và CoreDNS

Tiêu chíKubeDNSCoreDNS
Tình trạngĐã cũ (Legacy), hiện đã bị loại bỏ hoàn toàn trong các bản K8s mới.Mặc định từ v1.13+, được CNCF duy trì và hỗ trợ tích cực.
Cấu trúc thực thiChạy 3 container trong một Pod (kube-dns, dnsmasq, sidecar).Chạy duy nhất 1 container trong một Pod.
Tính linh hoạtRất hạn chế, khó tùy chỉnh các quy tắc DNS đặc thù.Rất linh hoạt nhờ kiến trúc Plugin (hỗ trợ rewrite, load balancing, cache…).
Ngôn ngữViết bằng Go.Viết bằng Go.
Hiệu suấtTốn tài nguyên hơn do phải chạy nhiều container và chuyển tiếp truy vấn qua lại.Nhanh và nhẹ hơn, quản lý bộ nhớ cực tốt, giảm độ trễ truy vấn DNS.
Độ ổn địnhDễ gặp lỗi đồng bộ giữa các container trong Pod.Độ tin cậy cao, dễ giám sát (Prometheus integration sẵn có).

Trong quá trình làm việc với Kubernetes, mình đánh giá sự chuyển đổi từ KubeDNS sang CoreDNS là một bước tiến hợp lý thay vì chỉ là thay thế công nghệ. CoreDNS không chỉ giải quyết các hạn chế về hiệu suất và độ ổn định của KubeDNS, mà còn mở ra khả năng tùy biến cao hơn nhờ kiến trúc plugin.

Thực tế triển khai cho thấy, việc sử dụng CoreDNS giúp hệ thống DNS nội bộ gọn nhẹ hơn, dễ quan sát và ít phát sinh lỗi liên quan đến đồng bộ. Trong khi đó, KubeDNS phù hợp hơn với các hệ thống cũ hoặc môi trường legacy, nhưng không còn đáp ứng tốt các yêu cầu hiện đại về scale và tối ưu tài nguyên.

Vietnix – Đơn vị cung cấp dịch vụ hosting, VPS và Enterprise Cloud chất lượng cao

Vietnix là đơn vị cung cấp dịch vụ hosting, cho thuê VPS và Enterprise Cloud chất lượng cao, đáp ứng tốt nhu cầu từ website cá nhân, dự án startup đến hệ thống ứng dụng doanh nghiệp phức tạp. Dịch vụ web hosting tại Vietnix sử dụng ổ cứng hiệu năng cao, tối ưu tốc độ và độ ổn định cho website. Các gói VPS mang lại tài nguyên riêng linh hoạt, phù hợp cho môi trường dev/test lẫn production. Trong khi đó Enterprise Cloud cung cấp cụm tài nguyên riêng trên nền tảng CPU AMD EPYC, 100% NVMe, hỗ trợ triển khai cloud server, Kubernetes, microservices và các hệ thống nội bộ với độ sẵn sàng cao và chi phí minh bạch. Liên hệ ngay!

Thông tin liên hệ:

  • Website: https://vietnix.vn/
  • Hotline: 1800 1093
  • Email: sales@vietnix.com.vn
  • Địa chỉ: 265 Hồng Lạc, Phường Bảy Hiền, Thành Phố Hồ Chí Minh

Câu hỏi thường gặp

Kubernetes Pod DNS hoạt động như thế nào?

Pod tự động được cấu hình sử dụng DNS nội bộ qua /etc/resolv.conf, với search domain như default.svc.cluster.local và nameserver trỏ đến CoreDNS.

DNS Kubernetes Service là gì?

Dịch vụ kube-dns (CoreDNS) cung cấp phân giải tên cho Service theo format ..svc.cluster.local, đảm bảo khám phá dịch vụ tự động.

Cách cài đặt CoreDNS trong Kubernetes?

CoreDNS là mặc định từ Kubernetes 1.11+, triển khai qua Deployment trong namespace kube-system. Bạn có thể kiểm tra bằng kubectl get deployment coredns -n kube-system.

Kubernetes DNS external xử lý ra sao?

Việc sử dụng dnsPolicy: None và dnsConfig trong Pod spec để chỉ định external nameserver, hoặc CoreDNS plugin forward cho upstream DNS.

CoreDNS Kubernetes plugin chính là gì?

Plugin kubernetes trong CoreDNS theo dõi API server để tự động tạo bản ghi A/AAAA/SRV cho Service và Pod.

Kubernetes DNS resolution thực hiện thế nào?

Pod query CoreDNS (thường ClusterIP 10.96.0.10), CoreDNS tra cứu từ API Kubernetes và trả về IP endpoint phù hợp.

Kubernetes custom DNS cấu hình ra sao?

Bạn có thể thêm dnsConfig vào Pod spec với nameservers, searches, options và đặt dnsPolicy: None để ghi đè mặc định.

DNS Kubernetes đóng vai trò trung tâm trong việc kết nối và khám phá dịch vụ, giúp các ứng dụng trong cluster giao tiếp dễ dàng và linh hoạt. Nhờ CoreDNS, hệ thống DNS Kubernetes mang lại hiệu quả cao, giảm thiểu lỗi và tối ưu quy trình vận hành cho môi trường container động. Cảm ơn bạn đã theo dõi bài viết!

THEO DÕI VÀ CẬP NHẬT CHỦ ĐỀ BẠN QUAN TÂM

Đăng ký ngay để nhận những thông tin mới nhất từ blog của chúng tôi. Đừng bỏ lỡ cơ hội truy cập kiến thức và tin tức hàng ngày

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Hưng Nguyễn

Co-Founder
tại

Kết nối với mình qua

Kết nối với mình qua

Theo dõi
Thông báo của
guest
0 Comments
Phản hồi nội tuyến
Xem tất cả bình luận

kien-thuc-dich-vu

kien-thuc-kubernetes

text
icon popup single post

CẢM ƠN BẠN ĐÃ ĐÁNH GIÁ BÀI VIẾT

Vietnix sẽ luôn cố gắng cải thiện chất lượng dịch vụ mỗi ngày

ĐÓNG

Đánh giá mức độ hữu ích của bài viết

icon 1 sao

Thất vọng

icon 2 sao

Chưa hữu ích

icon 3 sao

Bình thường

icon 4 sao

Hữu ích

icon 5 sao

Rất hữu ích

Icon
ĐĂNG KÝ NHẬN TÀI LIỆU THÀNH CÔNG
Cảm ơn bạn đã đăng ký nhận tài liệu mới nhất từ Vietnix!
ĐÓNG

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1

ĐĂNG KÝ DÙNG THỬ HOSTING

Asset

7 NGÀY MIỄN PHÍ

Asset 1
Icon
XÁC NHẬN ĐĂNG KÝ DÙNG THỬ THÀNH CÔNG
Cảm ơn bạn đã đăng ký thông tin thành công. Đội ngũ CSKH sẽ liên hệ trực tiếp để kích hoạt dịch vụ cho bạn nhanh nhất!
ĐÓNG