日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 >

覆盖网络 Flannel 0.7

發布時間:2024/4/13 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 覆盖网络 Flannel 0.7 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

資源

  • https://github.com/coreos/fla... 官方資源
  • https://github.com/coreos/fla... 下載地址

特性

概念

  • Flannel會修改Docker的啟動參數,限制指定每臺節點使用的子網不重復
  • 數據請求會從 docker0虛擬網卡轉發到flannel0虛擬網卡 再將數據封包之后通過路由或者隧道發送到對應節點解包,再從flannel0虛擬網發送到docker0虛擬網卡
  • 可以使用etcd的最新版本3.x,但flannel使用的還是2.x的數據保存格式,和v2的api
  • 使用中間網絡會有網絡延遲,大概比使用路由器性能下降了2倍路由器平均內網請求0.2ms左右 使用中間網絡內網平均0.4ms
  • 使用vxlan backend時,數據是由Kernel轉發的,Flannel不轉發數據,僅僅動態設置ARP entry
  • Flannel中有多種backend,其中vxlan backend通過內核轉發數據,而udp backend通過用戶態進程中的proxy轉發數據
  • 0.7.0中剛剛加入,即VTEP的IP加上了/32位的掩碼避免了廣播,此前的版本都是/16掩碼,解決了VXLAN網絡中由于廣播導致的“網絡風暴”的問題。
  • Flannel在使用vxlan backend的時候,短暫啟停flanneld不會造成網絡中斷,而udp backend會
  • 可以重啟flanneld來更新網絡配置;然后flannel每24h會自動重新分配集群內的網絡flanneld掛掉會導致本地的ARP entry無法自動更新,但是已經生成的網絡環境還是可用的

安裝

mkdir /opt/flanneld-v0.8.0 wget https://github.com/coreos/flannel/releases/download/v0.8.0/flannel-v0.8.0-linux-amd64.tar.gz tar -xzvf flannel-v0.8.0-linux-amd64.tar.gz -C /opt/flanneld-v0.8.0 ln -sf /opt/flanneld-v0.8.0/flanneld /usr/bin/flanneld rm -f flannel-v0.8.0-linux-amd64.tar.gz mkdir -p /var/log/k8s/flanneld#配置配置文件 vim /etc/sysconfig/flanneldFLANNEL_ETCD="http://10.31.75.198:2379,http://10.29.164.118:2379" FLANNEL_ETCD_KEY="/dudu_flannel/network" FLANNEL_OPTIONS="-ip-masq=true -v=0" FLANNEL_IFACE="eth0" 網卡 eth0 或IP -ip-masq=true 這個參數的目的是讓flannel進行ip偽裝,而不讓docker進行ip偽裝。這么做的原因是如果docker進行ip偽裝,流量再從flannel出去,其他host上看到的source ip就是flannel的網關ip,而不是docker容器的ip#配置系統啟動 vim /usr/lib/systemd/system/flanneld.service [Unit] Description=Flanneld server After=network.target After=network-online.target Wants=network-online.target Before=docker.service[Service] Type=notify EnvironmentFile=/etc/sysconfig/flanneld ExecStart=/usr/bin/flanneld -etcd-endpoints=${FLANNEL_ETCD} -iface=${FLANNEL_IFACE} -etcd-prefix=${FLANNEL_ETCD_KEY} $FLANNEL_OPTIONS Restart=on-failure[Install] WantedBy=multi-user.target#向etcd 寫入網段配置 export ETCDCTL_API=3 etcdctl put /dudu_flannel/network/config '{"Network": "172.17.0.1/16","SubnetMin": "172.17.0.0", "SubnetMax": "172.17.254.0","Backend":{"Type":"vxlan"}}' --endpoints=10.30.187.25:2379 查看 etcdctl --endpoints=10.30.187.25:2379 get /dudu_flannel/network/config 刪除 etcdctl --endpoints=10.30.187.25:2379 del --prefix=true "/dudu_flannel"或rest接口 curl -X PUT http://10.30.187.25:2379/v2/keys/dudu_flannel/network/config -d value='{"Network": "172.17.0.1/16","SubnetLen":24,"Backend":{"Type":"vxlan"}}' curl http://localhost:2379/v2/keys/dudu_flannel/network/config#刪除配置 curl http://localhost:2379/v2/keys/dudu_flannel/network/config -XDELETE curl http://localhost:2379/v2/keys/dudu_flannel?recursive=true -XDELETE#關閉防火墻 flanneld systemctl stop firewalld systemctl disable firewalld#清理防火墻到默認規則 #沒有任何參數的 -F 命令在當前表中刷新所有鏈。同樣的, -X 命令刪除表中所有非默認鏈。iptables -Fiptables -Xiptables -t nat -Fiptables -t nat -Xiptables -t mangle -Fiptables -t mangle -Xiptables -t raw -Fiptables -t raw -Xiptables -t security -Fiptables -t security -Xiptables -P INPUT ACCEPTiptables -P FORWARD ACCEPTiptables -P OUTPUT ACCEPT保存規則iptables-save#查看規則iptables -t filter --listiptables -t mangle --listiptables -t nat --listiptables -t raw --list#清理網卡 ip link delete docker0 ip link delete flannel.1#停止docker 啟動flannel systemctl daemon-reload systemctl stop docker systemctl stop flanneldsystemctl enable flanneld systemctl start flanneld systemctl status -l flanneldsystemctl restart flanneld#命令行啟動 /usr/local/bin/flanneld -etcd-endpoints=http://10.29.167.233:2379 -etcd-prefix=/dudu_flannel/network -iface=eth0 -log_dir=/var/log/k8s/flanneld#啟動flannel之后從etcd中獲取network的配置信息劃分本機subnet子網絡, #并在etcd中進行注冊本機的IP已經對應的子網。 #Flannel守護程序將子網配置信息記錄到/run/flannel/subnet.env文件中 #Flannel守護進程還創建/run/flannel/docker文件記錄docker的守護進程啟動需要的環境變量信息 #按照生成的docker環境變量配置docker的啟動參數啟動docker #如果沒有/run/flannel/docker 文件手動生成 /opt/flanneld-v0.8.0/mk-docker-opts.sh -i cat /run/docker_opts.env#例子: cat /run/flannel/subnet.env FLANNEL_NETWORK=172.17.0.0/16 FLANNEL_SUBNET=172.17.31.1/24 FLANNEL_MTU=1450 FLANNEL_IPMASQ=falsecat /run/flannel/docker DOCKER_OPT_BIP="--bip=172.17.31.1/24" DOCKER_OPT_IPMASQ="--ip-masq=true" DOCKER_OPT_MTU="--mtu=1450" DOCKER_NETWORK_OPTIONS=" --bip=172.17.31.1/24 --ip-masq=true --mtu=1450 "#修改 docker的啟動參數 按照/run/flannel/docker 文件中的配置 ip-masq表示IP偽裝 vim /etc/docker/daemon.json {"registry-mirrors": ["https://mb4qkfnx.mirror.aliyuncs.com"],"insecure-registries":["dudureg.xip.io:5000"],"bip":"172.17.0.1/24","ip-masq": false,"mtu": 1450,"iptables":false}#重啟docker systemctl restart docker #查看路由,查看網卡 route -n ifconfig #查看成員 curl http://localhost:2379/v2/keys/dudu_flannel/network/subnets #PublicIP配置的地址是外網地址,不是內網地址#測試 docker run -d -it --name ip_test alpine:3.5 ash docker inspect ip_test docker exec -ti ip_test ash #進入容器中互pingdocker run -it --rm busybox shdocker logs -f -t --tail=100 ip_test #查看系統日志 journalctl -fu docker.service journalctl --no-pager -l -u flanneld#監控包 tcpdump -i flannel.1 tcpdump host 10.29.168.24 and 10.29.167.186 -w /var/log/001.cap tcpdump -i flannel.1 -w /var/log/001.cap #防火墻Nat轉發規則 iptables -t filter -L -v#查看封包地址 bridge fdb show dev flannel.1 刪除 bridge fdb del xx:xx:xx:cc:dd:a7 dev flannel.1 添加 bridge fdb add xx:xx:xx:cc:dd:a7 dev flannel.1 dst 192.168.110.18 self permanent

常用操作命令

配置

  • 配置使用Vxlan 重啟需要在幾秒鐘內完成此操作,因為ARP條目可能會開始超時,需要法蘭絨守護程序刷新它們
  • 為了避免重新啟動過程中的中斷,不能更改配置(例如,VNI,-iface值)
  • vxlan將具有較低的延遲開銷和原生網絡一樣的帶寬,性能基本和原生一樣
  • cat /boot/config-uname -r | grep CONFIG_VXLAN 檢查主機內核是否支持VXLAN 返回 CONFIG_VXLAN=m支持

    cat flannel-config.json{"Network": "172.17.0.0/16","SubnetLen": 24,"Backend": {"Type": "vxlan","VNI": 1} } 在backend中還可以配置 Port 默認為內核默認端口8472 是發送UDP封包的端口號 #保存到etcd etcdctl set /dudu_flannel/network/config < flannel-config.json
  • 使用udp 作為后端 flanneld可以重新啟動 甚至進行升級而不會影響現有的流量

    cat flannel-config.json {"Network": "172.17.0.0/16","SubnetLen": 24,"SubnetMin": "172.17.0.0","SubnetMax": "172.17.254.0","Backend": {"Type": "udp","Port": 7890} }
  • 使用 host-gw 作為后端
etcdctl set /dudu_flannel/network/config '{"Network": "192.168.0.1/16","SubnetLen": 24,"Backend": {"Type": "host-gw"}}' curl http://10.99.132.22:2379/v2/keys/dudu_flannel/network/configflanneld -etcd-endpoints=http://10.99.132.21:2379 -etcd-prefix=/dudu_flannel/network -logtostderr=true -v=3 -iface=eth0 &>> /var/log/flanneld &子節點啟動網橋模式 docker run --net=bridge -itd --name='vm2' sshd:1.0 測試聯通docker exec vm1 ping -c 3 192.168.1.194 測試路由 docker exec vm1 traceroute 192.168.1.194
  • --iface 啟動參數默認使用的系統的默認路由網卡 route -n 排在第一個的就是默認路由,在阿里云默認路由就是etch1 為外網路由
  • 內網路由是eth0 需要手動配置--iface="eth0" 才能讓flannel使用內網路由內網IP通信

功能

功能1

功能2

調試

優化

常見問題

實際應用

總結

以上是生活随笔為你收集整理的覆盖网络 Flannel 0.7的全部內容,希望文章能夠幫你解決所遇到的問題。

如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。