如下圖,三台虛擬機k8s-master、k8s-node-1、k8s-node-2組成k8s集群,網絡拓撲和節點IP分配如下圖:
一、flannel組網方案
https://github.com/coreos/flannel
在flannel方案中,每台服務器被當作一個VXLAN的VTEP設備,ETCD根據每個docker網橋分配一個網段,集群中的所有容器通過UDP封裝形成VXLAN的大二層,所有Pod之間都可以IP可達,發布業務可以通過SVC或者ingress的方式。
部署步驟如下:
Step1:檢查k8s集群中的節點
Step2:安裝Flannel(所有節點)
Step3:修改Flannel配置文件,標紅部分為修改內容
[root@k8s-master ~]# vi /etc/sysconfig/flanneld
FLANNEL_ETCD_ENDPOINTS="http://127.0.0.1:2379" //修改為:FLANNEL_ETCD_ENDPOINTS="http://etcd:2379"
Step4:啟動flannel服務並且設置開機啟動(所有節點)
[root@k8s-master ~]# systemctl enable flanneld.service
Created symlink from /etc/systemd/system/multi-user.target.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
Created symlink from /etc/systemd/system/docker.service.wants/flanneld.service to /usr/lib/systemd/system/flanneld.service.
[root@k8s-master ~]# systemctl start flanneld.service
Step5:配置etcd中關於flannel的key(僅在master節點)
Step6:重啟docker和k8s服務后在節點上查看網絡信息
發現多了一個flannel0的網卡,分配了一個/24的地址段,網橋docker0也有了地址
Step7:在節點上ping測試容器IP
二、Calico組網方案
Calico組網方案是一個單純的L3組網方案,使用虛擬路由代替虛擬交換,每一台虛擬路由通過BGP協議傳播可達信息
https://github.com/projectcalico/calico