Điểm:0

Cụm KubeADM: cách định cấu hình DNS đúng cách

lá cờ au

Tôi có dự án sau đây mà tôi sử dụng để tạo cụm Kubernetes của riêng mình trên máy cục bộ (macOS) thông qua KubeAdm: https://github.com/sasadangelo/k8s-cluster Về cơ bản, tôi bắt đầu từ đây dự định và đã thực hiện cập nhật sau:

  • Định cấu hình triển khai Vagrant qua tệp YAML.
  • Hỗ trợ API K8s 1.6, K8s 1.18 và Calico 3.8.8
  • Triển khai bảng điều khiển K8s tự động.

Bây giờ tôi ổn với cụm này nhưng tôi có một số vấn đề về DNS mà tôi muốn biết cách giải quyết. Tool dùng 1 file Vagrant để khởi động 3 box Vagrant thì mình chủ yếu dùng 3 script:

  • configure_box.sh, mình hay cài vào mỗi box các phần mềm cần thiết như docker, kubeadm, kubelet, kubectl, v.v.
  • configure_master.sh, được sử dụng để chỉ định cấu hình nút chính, cài đặt plugin mạng và chạy khởi tạo kubeadm.
  • configure_worker.sh, được sử dụng để định cấu hình nút worker tham gia cụm.

vấn đề của tôi là độ phân giải.conf trong số Pods của tôi trông như thế này:

máy chủ tên 10.96.0.10
tìm kiếm default.svc.cluster.local svc.cluster.local cluster.local <tên miền khác đến từ máy chủ>
tùy chọn ndots:5

Tập tin này có hai vấn đề:

  1. không cho phép tôi truy cập Internet. Trên thực tế, tôi phải thêm thủ công thêm dòng này vào đầu tệp:
máy chủ định danh 8.8.8.8

và xóa nó khi không cần thiết nữa (nếu tôi giữ nó thì DNS nội bộ không hoạt động)

  1. trong mệnh đề tìm kiếm có các miền đến từ máy chủ của tôi: <other domain coming from host machine> mà gây ra vấn đề.

Tôi đã đọc rất nhiều tài liệu nhưng tôi vẫn gặp khó khăn khi tìm cách thay đổi mã của mình để tránh hai vấn đề này.

Michael Hampton avatar
lá cờ cz
Nếu bạn không có lý do cụ thể để thiết lập cụm phát triển ba nút, hãy cân nhắc sử dụng minikube để thay thế.
Salvatore D'angelo avatar
lá cờ au
Minikube, theo như tôi biết, là một nút duy nhất. Tôi cần kiểm tra ứng dụng của mình với các Pod chạy trên các worker khác nhau.
c4f4t0r avatar
lá cờ nl
@SalvatoreD'angelo với phiên bản minikube mới nhất, bạn có thể thêm nhiều nút
Salvatore D'angelo avatar
lá cờ au
Xin chào, vâng, tôi nhận thấy điều này. Tôi đã không biết điều đó. Nhưng tôi không rõ liệu chúng có phải là các nút thực hay không (ý tôi là Máy ảo như Hộp ảo) hay chỉ là các thùng chứa. Nếu chúng là VM thì công nghệ cơ bản được minikube sử dụng là gì? Tôi đã cố gắng tìm kiếm một câu trả lời nhưng không gặp may.
Điểm:2
lá cờ ng
  1. không cho phép tôi truy cập Internet.

Cấu hình mặc định của bạn có vẻ ổn. Như bạn đã thấy, bạn không muốn thay đổi pod resolv.conf của mình vì nó cần sử dụng dịch vụ coredns trong cụm để tra cứu dns cục bộ. Dịch vụ coredns sẽ có thể chuyển tiếp các yêu cầu dns tới trình phân giải được định cấu hình trong k8s-master của bạn /etc/resolv.conf. Có vẻ như đó có thể là sự cố với truy cập internet của máy chủ k8s-master hoặc với mạng hộp ảo.Tôi đã sao chép repo của bạn và có thể phân giải dns internet từ các nhóm chạy trên cụm như mong đợi.

Nếu bạn xem cấu hình coredns, bạn sẽ thấy rằng nó được thiết lập để sử dụng /etc/resolv.conf cho bất kỳ miền không xác định nào. Từ k8s-master bạn có thể chạy kubectl -n kube-system get configmap coredns -o yaml để xem cấu hình coredns. Sẽ có một dòng, phía trước . /etc/resolv.conf. Các tài liệu kubernetes tại đây giải thích cấu hình corefile coredns. Bạn cũng sẽ thấy rằng giải quyết.conf trong nhóm coredns giống như trên máy chủ. Để xác minh điều này, bạn có thể chạy ps-aux | lõi grep để lấy pid của một trong các quy trình coredns. Sau đó chạy nsenter -t <pid> -n mèo /etc/resolv.conf và bạn sẽ thấy rằng nội dung giống với hệ thống máy chủ. Nó phải có một trình phân giải từ mạng hộp ảo. Bạn có thể kiểm tra trình phân giải này từ máy chủ hoặc trong quy trình coredns để xác thực xem nó có thể phân giải dns hay không. Bạn cũng có thể kiểm tra trình phân giải google từ bên trong quy trình coredns để xem những gì bạn nhận được. Tôi sẽ thử tra cứu dns cũng như chỉ ping. Điều này sẽ giúp bạn thu hẹp những gì gây ra vấn đề của bạn. Một lần nữa, tôi đã thử vagrantfile của bạn trên một máy chủ Ubuntu 20.04 hoàn toàn mới và nó hoạt động tốt.

  1. trong mệnh đề tìm kiếm có các miền đến từ máy chủ của tôi gây ra sự cố.

Đây cũng là cấu hình dự kiến. Tôi thường không mong đợi điều này gây ra sự cố, nhưng tôi không biết cấu hình chính xác của bạn hoặc những gì bạn đang cố gắng đạt được. Nếu giải pháp yêu cầu bạn sửa đổi danh sách miền tìm kiếm trong nhóm, thì nơi thực hiện việc đó sẽ nằm trong chính sách dns nhóm. Hy vọng rằng việc giải quyết vấn đề đầu tiên của bạn sẽ cho phép bạn tránh phải tùy chỉnh điều này.

Salvatore D'angelo avatar
lá cờ au
Xin chào Mike, cảm ơn bạn rất nhiều vì câu trả lời đầy đủ của bạn. Thành thật mà nói, tôi không phải là chuyên gia về giải quyết vấn đề DNS (đây là một khuyết điểm mà tôi nên giải quyết) và tôi cần thời gian để phân tích và kiểm tra phản hồi của bạn. Hiện tại tôi chỉ có thể nêu lên câu trả lời của bạn và tôi sẽ quay lại nếu tôi nghi ngờ.
Salvatore D'angelo avatar
lá cờ au
Xin chào Mike Frank, sau một thời gian dài tôi vẫn ở đây với vấn đề này. Bạn có thể cho tôi biết chính xác phải làm gì để ghi đè mệnh đề tìm kiếm của tôi trong Pod /etc/resolve.conf không. Tôi đã thử sử dụng dnsConfig với mệnh đề tìm kiếm nhưng cuối cùng, miền bổ sung đến từ VirtualBox vẫn còn đó. Có cách nào để chỉ sử dụng cái tôi chỉ định trong dnsConfig mà không cần K8 kết hợp chúng với cái trong máy chủ Vagrant/VirtualBox không?

Đăng câu trả lời

Hầu hết mọi người không hiểu rằng việc đặt nhiều câu hỏi sẽ mở ra cơ hội học hỏi và cải thiện mối quan hệ giữa các cá nhân. Ví dụ, trong các nghiên cứu của Alison, mặc dù mọi người có thể nhớ chính xác có bao nhiêu câu hỏi đã được đặt ra trong các cuộc trò chuyện của họ, nhưng họ không trực giác nhận ra mối liên hệ giữa câu hỏi và sự yêu thích. Qua bốn nghiên cứu, trong đó những người tham gia tự tham gia vào các cuộc trò chuyện hoặc đọc bản ghi lại các cuộc trò chuyện của người khác, mọi người có xu hướng không nhận ra rằng việc đặt câu hỏi sẽ ảnh hưởng—hoặc đã ảnh hưởng—mức độ thân thiện giữa những người đối thoại.