流量轉發和橋接
- Kubernetes的核心是依靠Netfilter內核模塊來設定低級別的集群IP負載均衡,需要兩個關鍵的模塊:IP轉發和橋接
IP轉發(IP Forward)
- IP forward 是一種內核態設定,允許將一個介面的流量轉發到另外一個介面,該配置是 Linux 內核將流量從容器路由到外部所必須的.
查看
sysctl net.ipv4.ip_forward
# 0意味著未開啟
設定
sysctl -w net.ipv4.ip_forward=1
echo net.ipv4.ip_forward=1 >> /usr/lib/sysctl.d/00-system.conf
sysctl -p
橋接
-
bridge-netfilter 設定可以使 iptables 規則可以在 Linux Bridges 上面作業,就像 Docker 和 Kubernetes 設定的那樣,
-
此設定對于 Linux 內核進行宿主機和容器之間進行資料包的地址轉換是必須的,
查看
[root@t91 home]# sysctl net.bridge.bridge-nf-call-iptables
net.bridge.bridge-nf-call-iptables = 1
# 如果是0,則表示未開啟
設定
modprobe br_netfilter
sysctl -w net.bridge.bridge-nf-call-iptables=1
echo net.bridge.bridge-nf-call-iptables=1 >> /etc/sysconf.d/10-bridge-nf-call-iptables.conf
sysctl -p
防火墻規則
-
Kubernetes 提供了各種網路插件來支持其集群功能,同時也對傳統的基于 IP 和埠的應用程式提供了向后兼容的支持,
-
最常見的 一種 Kubernetes 網路方案就是利用 VxLan Overlay 網路,其中的 IP 資料包被封裝在 UDP 中通過8472埠進行資料傳輸,
-
這種情況下會出現100%資料包丟失
$ ping 10.244.1.4
PING 10.244.1.4 (10.244.1.4): 56 data bytes
^C--- 10.244.1.4 ping statistics ---
5 packets transmitted, 0 packets received, 100% packet loss
- 最好的方式是使用相同的協議來傳輸資料,因為防火墻規則可能配置了特地的協議,比如可能會阻止 UDP 流量,
- iperf 是一個很好的驗證工具
# 在服務端執行
iperf -s -p 8472 -u
# 在客戶端執行
iperf -c 172.28.128.103 -u -p 8472 -b 1K
轉載請註明出處,本文鏈接:https://www.uj5u.com/qita/45385.html
標籤:其他
上一篇:K8S集群搭建
下一篇:Docker容器
