kubelet集群網絡配置flannel(覆蓋網絡)


kubernetes本身並不會對跨主機容器的網絡進行設置,這需要額外的工具來實現。一些常用的開源工具主要包括flanne、OpenvSwitch、Weave、Calico等,這里面最常用的是flannel、OpenvSwitch和直接路由這3種配置。

1)安裝etcd

由於flannel使用etcd作為數據庫,所以需要預先安裝etcd。可以參照上一篇。

2)安裝flannel

需要在每台node上都安裝flannel。flannel的下載地址

將下載的二進制包進行解壓,然后將flanneld和mk-docker-opts.sh復制到/usr/bin目錄下,即可完成簡單安裝。

3)配置flannel

此處以systemd系統為例對flanneld服務進行配置。

cat /usr/lib/systemd/system/flanneld.service
[Unit]
Description=flanneld overlay address etcd agent
Documentation=https://github.com/coreos/flannel
After=network.service
Before=docker.service


[Service]
Type=notify
EnvironmentFile=/etc/sysconfig/flanneld
ExecStart=/usr/bin/flanneld --etcd-endpoints=${FLANNEL_ETCD} $FLANNEL_OPTIONS


[Install]
RequiredBy=docker.service
WantedBy=multi-user.target

編輯配置文件/etc/sysconfig/flanneld,並且設置etcd的地址。

cat /etc/sysconfig/flanneld

#flanneld configuration options

#etcd url location. Point this to the server where etcd runs 

FLANNEL_ETCD="http://192.168.142.161:2379,http://192.168.142.162:2379,http://192.168.142.163:2379"

# etcd config key. this is the configuration key that flannel queries
# for address range assignment
FLANNEL_ETCD_KEY="/coreos.com/network"

在啟動flanneld服務之前,需要在etcd中添加一條網絡配置記錄,這個配置將用於flanneld分配給每個docker的虛擬IP地址段。

etcdctl set /coreos.com/network/config '{ "Network": "10.1.0.0/16" }

4)由於flanneld將覆蓋docker0網橋,所以如果docker服務已經啟動,則停止docker服務。

5)啟動flanneld服務

systemctl restart flanneld

6)設置docker0網橋的ip地址

mk-docker-opts.sh -i
source /run/flannel/subnet.env
ifconfig docker0 ${FLANNEL_SUBNET}

完成后確認網絡接口docker0的IP地址屬於flannel0的子網

[root@kubernets-node2 ~]# ip add sh

4: docker0: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue state UP 
    link/ether 02:42:22:3b:9f:2e brd ff:ff:ff:ff:ff:ff
    inet 10.1.60.1/24 brd 10.1.60.255 scope global docker0
       valid_lft forever preferred_lft forever
    inet6 fe80::42:22ff:fe3b:9f2e/64 scope link 
       valid_lft forever preferred_lft forever
6: vethf488ee1@if5: <BROADCAST,MULTICAST,UP,LOWER_UP> mtu 1500 qdisc noqueue master docker0 state UP 
    link/ether 9a:38:bd:bb:88:c7 brd ff:ff:ff:ff:ff:ff link-netnsid 0
    inet6 fe80::9838:bdff:febb:88c7/64 scope link 

7)重新啟動docker服務

systemctl restart docker


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM