Flannel 是一種簡單易用的方法來設定專為 Kubernetes 設計的第 3 層網路結構。
Flannel 在每台主機上執行名為flanneld
小型單一二進位代理,並負責從更大的預先設定位址空間中為每台主機指派子網路租約。 Flannel 直接使用 Kubernetes API 或 etcd 來儲存網路配置、指派的子網路和任何輔助資料(例如主機的公用 IP)。使用多種後端機制之一轉送封包,包括 VXLAN 和各種雲端整合。
像 Kubernetes 這樣的平台假設每個容器 (pod) 在叢集內都有一個唯一的、可路由的 IP。此模型的優點是它消除了共享單一主機 IP 帶來的連接埠對映複雜性。
Flannel 負責在叢集中的多個節點之間提供第 3 層 IPv4 網路。 Flannel 不控制容器如何連網到主機,僅控制流量如何在主機之間傳輸。不過,flannel 確實為 Kubernetes 提供了 CNI 插件以及與 Docker 整合的指南。
Flannel 專注於人脈。對於網路策略,可以使用其他項目,例如 Calico。
使用 Kubernetes 部署 flannel 最簡單的方法是使用預設使用 flannel 進行網路叢集的幾種部署工具和發行版之一。例如,K3s 使用開源 K3s 安裝程式在其建立的 Kubernetes 叢集中設定 flannel 來驅動設定程序。
儘管不是必需的,但建議 flannel 使用 Kubernetes API 作為其後備存儲,這樣就無需為flannel
部署離散的etcd
叢集。這種flannel
模式稱為kube 子網路管理器。
Flannel 可以添加到任何現有的 Kubernetes 叢集中,儘管最簡單的方法是在使用 Pod 網路的任何 Pod 啟動之前新增flannel
。
對於 Kubernetes v1.17+
kubectl apply -f https://github.com/flannel-io/flannel/releases/latest/download/kube-flannel.yml
如果您使用自訂podCIDR
(不是10.244.0.0/16
),您首先需要下載上述清單並修改網路以符合您的網路。
# Needs manual creation of namespace to avoid helm error
kubectl create ns kube-flannel
kubectl label --overwrite ns kube-flannel pod-security.kubernetes.io/enforce=privileged
helm repo add flannel https://flannel-io.github.io/flannel/
helm install flannel --set podCidr= " 10.244.0.0/16 " --namespace kube-flannel flannel/flannel
有關更多詳細信息,請參閱 Kubernetes。
如果配置了防火牆,請確保啟用已設定後端使用的正確連接埠。
Flannel預設使用portmap
作為CNI網路外掛;部署 Flannel 時,請確保 CNI 網路插件安裝在/opt/cni/bin
中,可以使用下列命令下載最新的二進位檔案:
ARCH= $( uname -m )
case $ARCH in
armv7 * ) ARCH= " arm " ;;
aarch64) ARCH= " arm64 " ;;
x86_64) ARCH= " amd64 " ;;
esac
mkdir -p /opt/cni/bin
curl -O -L https://github.com/containernetworking/plugins/releases/download/v1.6.0/cni-plugins-linux- $ARCH -v1.6.0.tgz
tar -C /opt/cni/bin -xzf cni-plugins-linux- $ARCH -v1.6.0.tgz
Flannel 需要 br_netfilter 模組才能啟動,從版本 1.30 開始,kubeadm 不會檢查模組是否已安裝,如果模組遺失,Flannel 將無法正確啟動。
flannel 在 kubernetes 以外也被廣泛使用。當部署在 kubernetes 外部時,etcd 始終用作資料儲存。有關將 flannel 與 Docker 整合的更多詳細信息,請參閱運行
Flannel 維護者社區每隔週四上午 8:30(太平洋標準時間)召開一次會議。該會議用於在需要時討論問題、開放拉取請求以及與 Flannel 相關的其他主題。
會議議程和 Teams 連結可在此處找到:Flannel 社區會議議程
有關提交補丁和貢獻工作流程的詳細信息,請參閱貢獻。
有關報告任何問題的詳細信息,請參閱報告錯誤。
Flannel 遵循 Apache 2.0 授權。有關詳細信息,請參閱許可證文件。