2015-12-11 15 views
5

Tôi đang sử dụng một thiết lập cụm với nhiều apiservers với một loadbalancer ở phía trước của họ để truy cập bên ngoài, với một cài đặt trên kim loại trần.Làm thế nào để cấu hình master_url kube-proxy với nhiều apiservers

Như đã đề cập trong tài liệu High Availability Kubernetes Clusters, tôi muốn sử dụng tính năng cân bằng nội bộ sử dụng dịch vụ kubernetes trong cụm của tôi. Điều này hoạt động tốt cho đến nay, nhưng tôi không chắc chắn cách tốt nhất để thiết lập các kube-proxy là gì. Nó rõ ràng không thể sử dụng IP dịch vụ, vì nó thực hiện việc ủy ​​nhiệm cho nó dựa trên dữ liệu từ apiserver (master). Tôi có thể sử dụng IP của bất kỳ một trong những apiservers, nhưng điều này sẽ gây mất khả năng sẵn sàng cao. Vì vậy, lựa chọn duy nhất khả thi mà tôi hiện đang thấy là sử dụng loadbalancer bên ngoài của tôi, nhưng điều này có vẻ không đúng.

Bất kỳ ai có ý tưởng hay thực tiễn tốt nhất?

Trả lời

1

Đây là câu hỏi khá cũ, nhưng khi sự cố vẫn tiếp diễn ... ở đây.

Có một lỗi trong Kubernetes restclient, không cho phép sử dụng nhiều IP/URL, vì nó sẽ luôn nhận IP/URL đầu tiên trong danh sách. Điều này ảnh hưởng đến kube-proxy và cũng để kubelet, để lại một điểm duy nhất của sự thất bại trong những công cụ nếu bạn không sử dụng một cân bằng tải (như bạn đã làm) trong một thiết lập đa chủ. Giải pháp có lẽ không phải là giải pháp thanh lịch nhất từ ​​trước tới nay, nhưng hiện tại (tôi nghĩ) là giải pháp dễ dàng hơn.

Giải pháp khác (mà tôi thích, nhưng có thể không phù hợp với mọi người và không giải quyết được tất cả các sự cố) là tạo mục nhập DNS sẽ làm tròn các máy chủ API của bạn, nhưng được chỉ ra trong một trong các liên kết bên dưới , mà chỉ giải quyết cân bằng tải, chứ không phải HA.

Bạn có thể thấy sự tiến bộ của câu chuyện này trong các liên kết sau đây:

Các/kubelet vấn đề Kube-proxy: https://github.com/kubernetes/kubernetes/issues/18174
Các PR restclient: https://github.com/kubernetes/kubernetes/pull/30588
Các "chính thức" giải pháp: https://github.com/kubernetes/kubernetes/issues/18174#issuecomment-199381822

0

Tôi nghĩ rằng cách thức mà nó có nghĩa là để được thiết lập là bạn có một Kube-proxy trên mỗi nút chính, vì vậy mỗi Kube-proxy điểm để chủ của nó trên 127.0.0.1/localhost

Các podmaster xác định mà api-server nên chạy, do đó, việc sử dụng proxy cục bộ của chủ đó

+0

Về điểm đầu tiên: Vâng, tôi nghĩ vậy. Tôi đã chạy một kube-proxy trên mỗi bậc thầy, mà chỉ đến các bậc thầy địa phương. Vấn đề của tôi không phải là với kube-proxy trên các nút chính, nhưng trên các nút công nhân. Những người không có một tổng thể địa phương để kết nối. Điểm thứ hai là, afaik, sai. Theo tài liệu, podmaster chỉ được sử dụng để quyết định vị trí của trình lên lịch và trình quản lý bộ điều khiển được khởi tạo, trong khi trình apiserver đang chạy trên tất cả các phiên bản chính. –

Các vấn đề liên quan