Điểm:0

địa chỉ ip pod trùng lặp kubernetes - ip pod có phải là cụm duy nhất rộng không?

lá cờ de

Tôi đọc cái này trong tài liệu:

Mỗi Pod có địa chỉ IP riêng ... các nhóm trên một nút có thể giao tiếp với tất cả các nhóm trên tất cả các nút mà không cần NAT.

Tôi có nên đọc nó là "mỗi nhóm có cái riêng cụm duy nhất rộng Địa chỉ IP"?

Tôi cho rằng đây là trường hợp, nhưng lý do tôi hỏi là tôi nhận thấy các nhóm có cùng địa chỉ IP trên các nút khác nhau ngay sau khi tôi khởi tạo một cụm mới theo hướng dẫn đây. Cụm có 3 nút kiểm tra-vm{4,5,6}, với thử nghiệm-vm4 với tư cách là chủ, chạy trên mạng giả cục bộ 10.1.4.0/16. Tôi đã sử dụng vải nỉ cho CNI và thiết lập nó như thế này:

kubectl patch node test-vm{4..6} -p '{ "spec": { "podCIDR": "10.244.0.0/16" } }' # Phải làm điều này vì không đặt nó trên init cụm. Xem https://stackoverflow.com/a/60944959/2038383.
áp dụng kubectl -f https://raw.githubusercontent.com/coreos/flannel/master/Documentation/kube-flannel.yml

Lưu ý 3 IP xảy ra hai lần cho 2 nhóm khác nhau - 10.244.0.{2,3,4}:

$ kubectl lấy nhóm --all-namespaces -o wide -w
NAMESPACE NAME TÌNH TRẠNG SẴN SÀNG KHỞI ĐỘNG LẠI TUỔI IP NÚT ĐƯỢC CHỈ ĐỊNH NÚT SẴN SÀNG CỔNG
curl mặc định 1/1 Đang chạy 0 14m 10.244.0.4 test-vm6 <none> <none>
mặc định my-nginx-cf54cdbf7-d6s9m 1/1 Đang chạy 0 17m 10.244.0.3 test-vm6 <none> <none>
mặc định my-nginx-cf54cdbf7-twrvw 1/1 Đang chạy 0 17m 10.244.0.2 test-vm6 <none> <none>
mặc định my-nginx-cf54cdbf7-xpff6 1/1 Đang chạy 0 17m 10.244.0.4 test-vm5 <none> <none>
mặc định my-nginx-more-5f79688b9d-4c9jk 1/1 Đang chạy 0 3m10s 10.244.0.6 test-vm5 <none> <none>
mặc định my-nginx-more-5f79688b9d-7htsn 1/1 Đang chạy 0 3m18s 10.244.0.5 test-vm5 <none> <none>
mặc định my-nginx-more-5f79688b9d-gqz9b 1/1 Chạy 0 3m4s 10.244.0.7 test-vm5 <none> <none>
mặc định nginx1 1/1 Đang chạy 0 9s 10.244.0.8 test-vm5 <none> <none>
kube-system coredns-64897985d-kt82d 1/1 Chạy 0 41m 10.244.0.2 test-vm5 <none> <none>
kube-system coredns-64897985d-rd7gz 1/1 Chạy 0 41m 10.244.0.3 test-vm5 <none> <none>
kube-system etcd-test-vm4 1/1 Chạy 0 41m 10.1.4.36 test-vm4 <none> <none>
kube-system kube-apiserver-test-vm4 1/1 Chạy 0 41m 10.1.4.36 test-vm4 <none> <none>
kube-system kube-controller-manager-test-vm4 1/1 Chạy 0 41m 10.1.4.36 test-vm4 <none> <none>
kube-system kube-flannel-ds-snkhk 1/1 Đang chạy 0 29m 10.1.4.38 test-vm6 <none> <none>
kube-system kube-flannel-ds-wtmqg 1/1 Đang chạy 0 29m 10.1.4.37 test-vm5 <none> <none>
kube-system kube-flannel-ds-x46xw 1/1 Chạy 0 29m 10.1.4.36 test-vm4 <none> <none>
kube-system kube-proxy-mjl69 1/1 Chạy 0 41m 10.1.4.37 test-vm5 <none> <none>
kube-system kube-proxy-vz2p2 1/1 Chạy 0 41m 10.1.4.36 test-vm4 <none> <none>
kube-system kube-proxy-xg4gg 1/1 Chạy 0 41m 10.1.4.38 test-vm6 <none> <none>
kube-system kube-scheduler-test-vm4 1/1 Chạy 0 41m 10.1.4.36 test-vm4 <none> <none>

Bất chấp những gì tài liệu nói, tất cả các nhóm không thể giao tiếp với nhau. Chúng chỉ có thể giao tiếp với các nhóm trên cùng một nút và điều đó gây ra lỗi. Tự hỏi liệu đây có phải là dấu hiệu cảnh báo có điều gì đó không ổn hay không và đang tìm cách làm rõ điểm này về tính duy nhất của địa chỉ IP nhóm.

lá cờ in
Tôi tin rằng đó là IP của Nút, điều này sẽ xảy ra với `hostNetwork: true`; bạn có thể xác nhận điều đó?
spinkus avatar
lá cờ de
Mạng LAN của các nút là 10.1.4.0/24. Phạm vi mạng khác mà các nhóm đang sử dụng là 10.244.0.0/16 và được tạo bởi flannel và có liên quan đến một số thiết bị ảo hoặc quy tắc định tuyến iptables khác hoặc một số thứ tào lao mà tôi chưa hiểu. `kubectl lấy nút test-vm4 -o json | jq .spec.podCIDR` cung cấp `10.244.0.0/16"`. Có đề cập đến "hostNetwork: true" trong tệp `kube-flannel.yml` mà tôi đã sử dụng để cài đặt CNI flannel. Bạn chưa chắc điều này có nghĩa là gì.
spinkus avatar
lá cờ de
@mdaniel ồ bây giờ tôi đã hiểu rõ hơn: DaemonSet flanneld đang sử dụng mạng máy chủ (đúng như vậy) nhưng mạng nhóm là vxlan trên 10.244.0.0/16. Vì vậy, không, pod IP không phải là mạng máy chủ. Đó là vxlan mặc định.
Điểm:1
lá cờ de

Tôi đã hiểu rồi. Trước hết, Vâng các nhóm hoàn toàn được cho là có một địa chỉ IP duy nhất trên toàn cụm. Đó là nền tảng cho cách thức hoạt động của k8s. Tài liệu k8s được liên kết là tào lao và để câu hỏi hơi mở. Các nguồn từ ngữ tốt hơn:

Các nền tảng như Kubernetes giả định rằng mỗi vùng chứa (nhóm) có một IP duy nhất, có thể định tuyến bên trong cụm. Ưu điểm của mô hình này là nó loại bỏ sự phức tạp trong ánh xạ cổng do chia sẻ một IP máy chủ duy nhất. -- https://github.com/flannel-io/flannel#networking-details

Một trong những yêu cầu cốt lõi của mô hình mạng Kubernetes là mọi nhóm phải có địa chỉ IP của riêng mình và mọi nhóm trong cụm phải có thể giao tiếp với nhóm bằng địa chỉ IP này. -- https://ronaknathani.com/blog/2020/08/how-a-kubernetes-pod-gets-an-ip-address/


Bây giờ, câu hỏi đặt ra là tại sao các nhóm của tôi được gán cùng một địa chỉ IP? Về cơ bản, việc này được thực hiện tại flannel CNI init is Sai lầm (Tôi đã sao chép gợi ý này từ câu trả lời SO này):

kubectl patch node test-vm{4..6} -p '{ "spec": { "podCIDR": "10.244.0.0/16" } }' # Phải làm điều này vì không đặt nó trên init cụm.

podCIDR phải là duy nhất cho mỗi nút. Đây là cách k8s đảm bảo mỗi nhóm được lên lịch có một địa chỉ IP duy nhất - mỗi nút chỉ định một số IP trong podCIDR của nó. Xem cái này bài viết blog tuyệt vời giải thích nó. Ở trên không tương đương với cài đặt --pod-mạng-cidr trên khởi tạo kubeadm như bạn phải làm. Các --pod-mạng-cidr tùy chọn dòng lệnh thực sự tương ứng với CụmCấu hình mạng.podSubnet. Vì vậy, nếu bạn cần thiết lập nó sau khi bạn xóa flannel, sau đó chỉnh sửa cấu hình cụm (chưa thực sự thử nghiệm phương pháp này, tôi chỉ khởi tạo lại với --pod-network-cidr set):

xóa kubectl -f kube-flannel.yml
kubectl chỉnh sửa cm -n kube-system kubeadm-config # và thêm cài đặt.

Sau khi đặt:

mặt phẳng điều khiển sẽ tự động phân bổ CIDR cho mọi nút. -- https://kubernetes.io/docs/reference/setup-tools/kubeadm/kubeadm-init/.

Nếu bạn định đặt từng nút podCIDR thiết lập nó phải là duy nhất cho mỗi nút. Bạn nên tránh cài đặt thủ công nếu các nút dự kiến ​​sẽ đến và đi một cách linh hoạt - đó là trường hợp bình thường.


CẬP NHẬT: Phương pháp cài đặt trên CụmCấu hình mạng.podSubnet sau khi init không thực sự hoạt động. Nó thậm chí không hoạt động nếu bạn hủy đăng ký và đăng ký lại tất cả các nút công nhân gây phiền nhiễu.AFAIK cách duy nhất để cài đặt podCIDR nút tự động hoạt động là thổi bay cụm của bạn và khởi tạo lại với --pod-mạng-cidr đặt hoặc mạng.podSubnet thiết lập trong cấu hình ban đầu (xem --config Tùy chọn).

Đă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.