Điểm:0

Sự cố mạng Kubernetes Bridge

lá cờ cl

Chúng tôi đang chạy các ứng dụng của mình trong cụm Kubernetes(1.11) được cài đặt thông qua KOps. (Cụm DEV/QA của chúng tôi được kế thừa từ nhân viên không còn ở công ty nữa)

Hầu hết mọi thứ hoạt động tốt nhưng đôi khi sau khi triển khai, một số nhóm đưa ra lỗi từ chối kết nối. Chúng tôi biết được vì Nginx đang phàn nàn về lỗi 502 từ phần phụ trợ.

Đôi khi nó sẽ tự động hoạt động trở lại, nhưng một lần nữa nó sẽ bắt đầu báo lỗi. Khởi động lại nhóm sẽ giải quyết vấn đề. Nó sẽ hoạt động tốt cho đến lần triển khai tiếp theo, sau đó sự cố lại xảy ra.

Chúng tôi đã so sánh nhật ký hệ thống với cụm khác nhưng mọi thứ trông giống nhau.

Nhật ký TCPDUMPS của IP của POD

11:06:47.387766 IP 100.96.13.22.57778 > 100.96.12.137.http-alt: Flags [S], seq 1515889791, win 26883, tùy chọn [mss 8961,sackOK,TS val 132113284 ecr 0,nop,wscale 9], chiều dài 0
11:06:47.387775 IP 100.96.13.22.57778 > 100.96.12.137.http-alt: Flags [S], seq 1515889791, win 26883, tùy chọn [mss 8961,sackOK,TS val 132113284 ecr 0,nop,wscale 9], chiều dài 0
11:06:47.387777 IP 100.96.13.22.57778 > 100.96.12.137.http-alt: Flags [S], seq 1515889791, win 26883, tùy chọn [mss 8961,sackOK,TS val 132113284 ecr 0,nop,wscale 9], chiều dài 0
11:06:47.387781 IP 100.96.12.137.http-alt > 100.96.13.22.57778: Flags [R.], seq 0, ack 1515889792, win 0, độ dài 0
11:06:47.387781 IP 100.96.12.137.http-alt > 100.96.13.22.57778: Flags [R.], seq 0, ack 1, win 0, độ dài 0
11:06:47.387785 IP 100.96.12.137.http-alt > 100.96.13.22.57778: Flags [R.], seq 0, ack 1, win 0, độ dài 0

Như đã thấy trong nhật ký, nhóm Ingress-nginx(100.96.13.22) cố gắng kết nối với nhóm ứng dụng web (100.96.12.137) nhưng kết nối với các nhóm được đặt lại ngay lập tức.

Điều tra của chúng tôi:

Sau khi tìm hiểu về cách thức hoạt động của mạng kubernetes (Mạng cầu nối, cặp VETH), (https://medium.com/practo-engineering/networking-with-kubernetes-1-3db116ad3c98 https://stackoverflow.com/questions/37860936/find-out- which-network-interface-belongs-to-docker-container https://www.digitalocean.com/community/tutorials/how-to-inspect-kubernetes-networking#finding-and-entering-pod-network-namespaces )

Theo đó, giao diện nhóm được kết nối thông qua cặp VETHÂ với giao diện cầu nối Nút Mọi lưu lượng truy cập từ hoặc đến nhóm đều đi qua cây cầu này (trong trường hợp của chúng tôi là cbr0)

Xử lý sự cố:

Chúng tôi đã nhận được ID vùng chứa nhóm bị ảnh hưởng bằng cách chạyÂ

docker ps

Nhận ID tiến trình của Pod

docker kiểm tra --format '{{ .State.Pid }}' container-ID

Nhận thông tin chi tiết về Mạng Pods

nsenter -t container-pid -n ip addr
đầu ra:
1: lo: <LOOPBACK,UP,LOWER_UP> mtu 65536 trạng thái qdisc noqueue nhóm UNKNOWN mặc định qlen 1
 liên kết/loopback 00:00:00:00:00:00 brd 00:00:00:00:00:00
 máy chủ phạm vi inet 127.0.0.1/8 lo
 hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
 inet6 ::1/128 máy chủ phạm vi 
 hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
3: eth0@if380852: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 trạng thái qdisc noqueue nhóm LÊN mặc định 
 liên kết/ether 0a:58:64:60:0d:27 brd ff:ff:ff:ff:ff:ff link-netnsid 0
 inet 100.96.13.39/24 phạm vi toàn cầu eth0
 hợp lệ_lft mãi mãi ưa thích_lft mãi mãi
 liên kết phạm vi inet6 fe80::e4cd:81ff:fe96:2914/64 
 hợp lệ_lft mãi mãi ưa thích_lft mãi mãi

eth0@if380852Â là giao diện mạng nhóm

380852Â là số liên kết VETH

0a:58:64:60:0d:27Â là địa chỉ mac của nhóm

Nhận thông tin chi tiết về cặp VETH của nhóm

địa chỉ ip | grep 380852
đầu ra:380852: vethd49cda8b@if3: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 9001 qdisc noqueue master cbr0 trạng thái Nhóm LÊN mặc định

Đây vethd49cda8b là nhóm VETH ID

Bây giờ kiểm tra các chi tiết cầu

Lấy bảng mac cầu:

brctl showmacs cbr0 | grep 0a:58:64:60:0d:27
đầu ra:27 0a:58:64:60:0d:27 không 1,44

Đây 27Â là PORT của giao diện VETHÂ

Đã kiểm tra chi tiết VETHÂ của Cảng

brctl showstp cbr0 | grep "(27)"
đầu ra:
veth488082e8 (27)

Chúng ta có thể thấy rằng Cổng 27 thuộc về giao diện VETH khác, Đầu ra dự kiến ​​sẽ là: ID VETH của POD (PORT trong bảng bridge)

vethd49cda8b (27)

Hãy lấy PORT thực tế của giao diện VETH của POD

brctl showstp cbr0 | grep vethd49cda8b
đầu ra:
vethd49cda8b (52)

Chúng ta có thể thấy rằng lưu lượng truy cập vào các nhóm đang bị mất do cổng sai trong bảng cầu mac

Bảng MAC cầu sẽ hiển thị cổng là 52 cho địa chỉ MAC của vùng chứa, nhưng nó đang hiển thị 27

Nhưng sau một thời gian, nó sẽ tự động hiển thị đúng cổng, giúp giải quyết vấn đề kết nối của chúng tôi.

Có thể biết những gì cập nhật bảng cầu không? và làm thế nào để tránh cập nhật sai?

Làm thế nào chúng ta có thể khắc phục sự cố thêm?

Có ai phải đối mặt với các vấn đề tương tự.

Cảm ơn trước, thực sự đánh giá cao bất kỳ sự giúp đỡ.

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