Flannel は、Kubernetes 用に設計されたレイヤー 3 ネットワーク ファブリックを構成するためのシンプルかつ簡単な方法です。
Flannel は、 flanneld
と呼ばれる小さな単一のバイナリ エージェントを各ホスト上で実行し、より大きな事前構成されたアドレス空間から各ホストにサブネット リースを割り当てる役割を果たします。 Flannel は、Kubernetes API または etcd を直接使用して、ネットワーク構成、割り当てられたサブネット、および補助データ (ホストのパブリック IP など) を保存します。パケットは、VXLAN やさまざまなクラウド統合を含む、いくつかのバックエンド メカニズムの 1 つを使用して転送されます。
Kubernetes などのプラットフォームは、各コンテナー (ポッド) がクラスター内で一意のルーティング可能な IP を持つことを前提としています。このモデルの利点は、単一のホスト IP の共有によって生じるポート マッピングの複雑さが解消されることです。
Flannel は、クラスター内の複数のノード間にレイヤー 3 IPv4 ネットワークを提供する役割を果たします。 Flannel は、コンテナーがホストにネットワーク接続される方法を制御せず、ホスト間でトラフィックが転送される方法のみを制御します。ただし、flannel は Kubernetes 用の CNI プラグインと Docker との統合に関するガイダンスを提供します。
Flannel はネットワーキングに重点を置いています。ネットワーク ポリシーには、Calico などの他のプロジェクトを使用できます。
Kubernetes で flannel をデプロイする最も簡単な方法は、デフォルトで flannel でクラスタをネットワーク化するいくつかのデプロイメント ツールおよびディストリビューションの 1 つを使用することです。たとえば、K3s は、オープン ソースの K3s インストーラーを使用して作成する Kubernetes クラスターにフランネルをセットアップし、セットアップ プロセスを推進します。
必須ではありませんが、 flannel には Kubernetes API をバッキング ストアとして使用することをお勧めします。これにより、 flannel
用に個別のetcd
クラスターをデプロイする必要がなくなります。このflannel
モードは、kube サブネット マネージャーとして知られています。
Flannel は既存の Kubernetes クラスターに追加できますが、ポッド ネットワークを使用するポッドが開始される前に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 は常にデータストアとして使用されます。フランネルと Docker の統合の詳細については、「実行」を参照してください。
Flannel Maintainer Community は、隔週木曜日午前 8 時 30 分(太平洋標準時)にミーティングを開催します。このミーティングは、必要に応じて、Flannel に関連する問題、オープンなプル リクエスト、その他のトピックについて話し合うために使用されます。
会議の議題と Teams のリンクは次の場所にあります: Flannel コミュニティ会議の議題
パッチの送信と貢献ワークフローの詳細については、「貢献」を参照してください。
問題の報告の詳細については、「バグの報告」を参照してください。
Flannel は Apache 2.0 ライセンスの下にあります。詳細については、LICENSE ファイルを参照してください。