1. コンテナネットワークと戦略Kubernetes 自体はコンテナ ネットワークを実装していません。代わりに、CNI 標準を使用して、さまざまなネットワーク プラグインをプラグイン方式で統合し、クラスターの内部ネットワーク間の通信を実現します。 CNI 標準で定義されているコア インターフェース操作 (ADD、ネットワークへのコンテナーの追加、DEL、ネットワークからのコンテナーの削除、CHECK、コンテナーのネットワークが期待どおりかどうかの確認など) を実装する限り、誰でも CNI プラグインを作成できます。 CNI プラグインは通常、コンテナ間のネットワーク通信に重点を置いています。 Kubernetes によって構築された Services ネットワーク サービスは、引き続き kube-proxy によって処理されます。次の図に示すように、サービスのバックエンドにある Pod サービスはホストの IPtables を通じて決定され、ネットワーク メッセージは CNI プラグインを通じてターゲット Pod に転送されます。 CNI インターフェースは HTTP または gRPC を参照しません。 CNI インターフェイスは、実行可能プログラムの呼び出し (exec) を参照します。 Kubernetes ノードのデフォルトの CNI プラグイン パスは /opt/cni/bin です。 CNI は、JSON 形式の構成ファイルを通じてネットワーク構成を記述します。コンテナ ネットワークをセットアップする必要がある場合、コンテナ ランタイムは CNI プラグインを実行し、構成ファイル情報を CNI プラグインの標準入力 (stdin) を介して渡し、プラグインの実行結果を標準出力 (stdout) を介して受信する役割を担います。ネットワーク プラグインは、機能に基づいて 5 つのカテゴリに分類できます。 1.メイン プラグインは、特定のネットワーク デバイスを作成します (bridge: ブリッジ デバイス、コンテナーとホストの接続、ipvlan: コンテナーへの ipvlan ネットワーク カードの追加、loopback: IO デバイス、macvlan: コンテナーの MAC アドレスの作成、ptp: Veth ペアの作成、vlan: VLAN デバイスの割り当て、host-device: 既存のデバイスのコンテナーへの移動)。 (ii) IPAM プラグイン: IP アドレスの割り当てを担当します (dhcp: コンテナーは DHCP サーバーに要求を開始して、Pod の IP アドレスを発行または再利用します。ホスト ローカル: 割り当てに事前構成された IP アドレス セグメントを使用します。静的: コンテナーに静的 IPv4/IPv6 アドレスを割り当てます。主にデバッグに使用されます)。 (III) META プラグイン:その他の機能用のプラグイン (チューニング: sysctl を介してネットワーク デバイス パラメータを調整する、ポートマップ: iptables を介してポート マッピングを構成する、帯域幅: トークン バケット フィルタを使用してフローを制限する、sbr: ネットワーク カードのソース ベース ルーティングを設定する、ファイアウォール: iptables を介してコンテナ ネットワークの受信トラフィックと送信トラフィックを制限する)。 (iv) Windows プラグイン: Windows プラットフォーム専用の CNI プラグイン (win-bridge および win-overlay ネットワーク プラグイン)。 (V)サードパーティのネットワークプラグイン:サードパーティのオープンソースネットワークプラグインは数多くあります。各コンポーネントにはそれぞれ独自の利点と適用可能なシナリオがあり、統一された標準コンポーネントを形成することは困難です。よく使用されるものには、Flannel、Calico、Cilium、OVN ネットワーク プラグインなどがあります。 ほとんどの CNI プラグインの機能設計は、単一の機能責任の原則に従います。たとえば、Bridge プラグインはブリッジ関連の構成を担当し、Firewall プラグインはファイアウォール関連の構成を担当し、Portmap プラグインはポート マッピング関連の構成を担当します。そのため、ネットワーク設定が複雑な場合は、複数のプラグインを呼び出すことで設定が完了するのが一般的です。 CNI は、前回の記事で述べた POD ネットワークを構成する際の Flannel ネットワーク プラグイン CNI プラグインのチェーン呼び出しのように、複数のプラグインを組み合わせて順番に呼び出すチェーン呼び出し (NetworkConfigList) を通じて複数のプラグインを使用します。 Kubernetes の基盤となるレイヤーは、Linux の Cgroup と Namespace を使用して、基盤となる基本リソースの分離を実現します。各名前空間には、インターフェース、ルーティング テーブル、ソケット、IPTABLE ルールなどの独自のネットワーク スタックがあります。インターフェースは 1 つのネットワーク名前空間にのみ属することができるため、複数のコンテナーには複数のインターフェースが必要です。一般的に、ハードウェア リソースの共有は、仮想デバイスを実際の物理デバイスに接続する仮想化テクノロジによって実現されます。具体的な実装は 3 つあります。 1. 仮想ブリッジ:コンテナ内のホスト マシンのルート名前空間に一方の端がある仮想 veth ペアを作成し、Linux ブリッジまたは OpenvSwitch (OVS) を使用して 2 つの異なる名前空間の veth ペアを接続します。このようにして、コンテナから送信されたネットワーク データ パケットはブリッジを介してホスト ネットワーク スタックに入ることができ、コンテナに送信されたネットワーク データ パケットもブリッジを介してコンテナに入ることができます。 (2)多重化:中間ネットワークデバイスを使用して、複数の仮想ネットワークカードインターフェースを公開します。すべてのコンテナ ネットワーク カードはこの中間デバイスにアクセスでき、MAC アドレス/IP アドレスを使用して、どのパケットを特定のコンテナ デバイスに転送する必要があるかを区別できます。 (3)ハードウェアスイッチング:各ポッドに仮想ネットワークカードを割り当てます。この方法では、物理マシン間の通信基盤に近くなるため、Pod 間の接続が非常に明確になります。現在、ほとんどのネットワーク カードは、単一の物理ネットワーク カードを複数の VF インターフェイスに仮想化する SR-IOV 機能をサポートしています。各 VF インターフェイスには個別の仮想 PCIe チャネルがあり、これらの仮想 PCIe チャネルは物理ネットワーク カードの PCIe チャネルを共有します。 Kubernetes ネットワークの場合、ネットワーク ポリシーも非常に重要な機能です。ネットワーク ポリシー機能は、ポリシーをまったく適用しない Flannel プラグインなどの CNI プラグインの特定の実装に大きく依存します。ただし、ほとんどのプラグインはポリシーを適用し、Pod の入力トラフィックと出力トラフィックに対してポリシーを設定します。 Kubernetes ネットワーク ポリシーは名前空間スコープに属します。 2. CalicoコンテナネットワークプラグインCalico は、コンテナ、仮想マシン、物理マシンなどのシナリオに適した、Apache 2.0 プロトコルに基づく Tigera のオープン ソース ネットワークおよびネットワーク セキュリティ ソリューションです。 Calico は、Kubernetes、OpenShift、OpenStack などの主流のプラットフォームをサポートしています。 Kubernetes クラウドネイティブ コンテナ ネットワーキングに関しては、Calico は CNI 標準に完全に準拠しています。 Flannel はシンプルなため、初心者のユーザーにとって最初の選択肢となりますが、Calico もパフォーマンスと柔軟性に優れた優れた選択肢です。現在、コンテナ ネットワーク プラグインの 90% 以上は Flannel と Calico が占めています。 Flannel プラグインと比較すると、Calico はより包括的な機能を備えており、ホストと Pod 間のネットワーク接続を提供するだけでなく、ネットワークのセキュリティと管理も行います。 Calico 3.x バージョン以降、Calico のデフォルト モードは BGP から、より効率的なオーバーレイ モードである IPIP に調整されました。 Calicoの特徴は以下の通りです。 1. 効率的なビジュアル管理: Calico は、ネイティブ Linux eBPF 管理、標準 Linux ネットワーク管理、Windows HNS 管理を含む完全なビジュアル管理を提供します。 Calico は、基本ネットワーク、ネットワーク ポリシー、IP アドレスなどの機能を抽象化して統合することにより、シンプルで使いやすく、一貫性のある管理プレーンを提供します。 2. ネットワーク セキュリティ戦略: Calico は、ネットワーク トラフィック管理を簡単に実装できる豊富なネットワーク ポリシー モデルを提供します。同時に、内蔵のWireguard暗号化機能と組み合わせることで、Pod間のデータ転送を迅速に実現できます。 Calico ポリシー エンジンは、ホスト ネットワークとサービス ネットワークで同じポリシー モデルを実行して、インフラストラクチャと上位層サービス間のネットワーク データのリスクを分離することもできます。 3. 高いパフォーマンスとスケーラビリティ: Calico は最先端の eBPF テクノロジーを使用し、オペレーティング システム カーネル ネットワーク パイプラインを徹底的に調整して、ネットワーク パフォーマンスを向上させます。 Calico は幅広いネットワーク構成をサポートしており、ほとんどのシナリオでオーバーレイを使用して、データ パケットのカプセル化/カプセル化解除による高いオーバーヘッドを回避できます。同時に、Calico はクラウドネイティブ設計モデルに準拠し、最下層で標準ネットワーク プロトコルを使用し、優れたスケーラビリティを備えています。 4. 大規模生産運用の実績: Calico は、SaaS プロバイダー、金融サービス企業、製造業者などを含む大規模生産環境の運用実績を持っています。パブリッククラウドに関しては、Amazon EKS、Azure AKS、Google GKE、IBM IKS などはすべて、すぐに使用できる Calico ネットワーク セキュリティ機能を統合しています。 3. CalicoコアコンポーネントCalico の柔軟なネットワーク モジュラー アーキテクチャには、CNI ネットワーク プラグイン、CNI IPAM プラグイン、ネットワーク モード、ネットワーク戦略の 4 つの側面が含まれます。 (I) CNI ネットワーク プラグイン: Calico CNI ネットワーク プラグインは、仮想イーサネット デバイスのペア (vethpair) を介して Pod をホスト ネットワーク名前空間のレイヤー 3 ルーティングに接続し、他の多くの Kubernetes ネットワーク ソリューションにおけるレイヤー 2 ブリッジのパフォーマンス オーバーヘッドを回避します。 (ii) CNI IPAM プラグイン: Calico CNI IPAM プラグインは、1 つ以上の設定可能な IP アドレス範囲からポッドに IP アドレスを割り当て、必要に応じて各ノードに小さな IP ブロックを動的に割り当てます。 Calico CNI IPAM は、他の CNI IPAM プラグインよりも効率的に IP アドレス空間を使用します。 (III)ネットワークモード: Calico がサポートするネットワークモードは、オーバーレイと非オーバーレイに分かれています。 オーバーレイ モードでは、 Calico はクロスサブネット モードを含む VXLAN または IP-in-IP ネットワーク モードを提供します。 非オーバーレイ モードでは、 Calico は L2 ネットワークまたは L3 ネットワーク上で実行される非オーバーレイ ネットワークを提供します。 (IV) ネットワークポリシー: Calico のネットワークポリシー実行エンジンは、Kubernetes ネットワークポリシーのすべての機能を実装し、追加の拡張機能を追加します。 Calico の最優先ネットワーク設定は、BGP を使用して非オーバーレイ ネットワーク モードで物理ネットワークとピアリングし、Pod IP をクラスター外部にルーティングできるようにすることです。 BGP ピアリングを物理ネットワークに接続できないが、クラスターが独立した L2 ネットワーク内にある場合は、非オーバーレイ モードを実行することもできますが、クラスター内のノード間でのみ BGP がピアリングされ、アプリケーション外部の Pod IP のルーティングが欠如しているため、クラスター外部にルーティングすることはできません。または、オーバーレイ モードで VXLAN または IP-in-IP に設定し、クロスサブネット オーバーレイ モードを使用して L2 サブネット内のパフォーマンスを最適化します。 上の図は、Calico ネットワークとポリシーのアーキテクチャの完全な図であり、Calico API サーバー、Felix、BIRD、confd、Dikastes、CNI プラグイン、データストア プラグイン、IPAM プラグイン、kube-controllers、Typha、calicoctl など、必須およびオプションのすべてのコンポーネントが含まれています。 Calico API サーバー: kubectl を介して Calico リソースの管理をサポートします。 Felix:クラスターの各ノードでデーモンとして実行され、インターフェース管理、ルート プログラミング、ACL プログラミング、状態レポートという 4 つの主要機能を提供します。 BIRD: Felix からルートを取得し、ホスト間ルーティングのためにネットワーク上の BGP ピアに配布します。 Felix と同様に、クラスター内のすべてのノードで実行されます。主に、ルート配布とBGPルートリフレクタ構成の2つの主要機能を提供します。 Confd: BGP 構成とグローバル デフォルト値を保存し、データの変更を監視し、BIRD 構成ファイルを動的に生成し、BIRD をトリガーして構成情報を再ロードする、オープン ソースの軽量構成管理ツールです。 CNI プラグイン: Kubernetes クラスターに Calico ネットワーク機能を提供します。 IPAM プラグイン: Calico CNI プラグインの 1 つで、Calico の IP プール リソースを使用して、クラスター内の Pod への IP アドレスの割り当てを制御します。 kube-controllers:ポリシー コントローラー、名前空間コントローラー、サービス アカウント コントローラー、ワークロード エンドポイント コントローラー、ノード コントローラーを含む Kubernetes コントローラー。 calicoctl : Calico オブジェクトを作成、読み取り、更新、削除するためのコマンドライン インターフェイス。 データストア プラグイン:各ノードがデータ ストレージに与える影響を軽減することでスケールを拡大します。これは Calico CNI プラグインの 1 つです。 Typha:各ノードのデータ ストレージへの影響を軽減することでスケールアップします。データ ストアと Felix インスタンス間のデーモンとして実行されます。 Dikastes: Istio Envoy のサイドカー プロキシとして実行され、Istio サービス メッシュのネットワーク ポリシーを強化します。 4. まとめKubernetes コンテナ ネットワーキングは比較的複雑であり、コンテナ ネットワーキング ソリューションは、基盤となるインフラストラクチャおよび上位層サービスと連動して決定する必要があります。同時に、多くのネットワーク プラグインは複数のモードをサポートしており、明確に理解するには多くの基本的なネットワーク知識が必要です。適切な CNI プラグインを選択するには、基盤となるネットワーク トポロジ、アプリケーションに必要なネットワーク機能、およびネットワーク ルーティング プロトコルの要件を考慮する必要があります。 Calico は、豊富な機能と継続的に最適化されたパフォーマンスを備えた、比較的成熟したコンテナ ネットワーク プラグインです。そのため、Calico ネットワーク プラグインは、ネットワークの基礎、Calico アーキテクチャの原則から Calico の実際の操作に至るまで、合計 8 つの記事からなる一連の記事として計画されており、Calico ネットワーク プラグインの謎を解明して深く理解し、コンテナ ネットワークの関連知識を徹底的に習得できるようにします。 この記事はWeChatの公開アカウント「Juzijia」から転載したもので、以下のQRコードからフォローできます。この記事を転載する場合はJuzijia公式アカウントまでご連絡ください。 |
<<: ガートナー:2025年を見据え、中国のクラウドの将来について多面的に議論
>>: 「クラウド戦略」は企業のデジタル変革の重要な柱となる
検索エンジンは、毎年恒例の CCTV 春節祝賀会と同じように、多くの人に愛され、嫌われ、喜ぶ人もいれ...
序文最近、分散トランザクションに関するブログ投稿をいくつか読んで、メモを取りました。ハハハ〜データベ...
raksmart のロサンゼルス データ センターでは現在、安価な独立型サーバー (物理マシン) を...
vmiss は日本で新しい VPS サービスを追加しました。以前は日本の大阪データセンター (IIJ...
月収10万元の起業の夢を実現するミニプログラム起業支援プラン生活の中では、エレベーター、バス停、地下...
流行下では、大手企業開発者、中小企業、起業家開発者を問わず、運用コストと効率の管理にますます注意を払...
zji.net は現在、台湾の cn2+bgp 回線に接続された台湾サーバー (物理マシン) と、香...
現在、インターネットの急速な発展に伴い、ますます多くの人々が電子商取引の巨大な将来の市場展望を目にす...
クラウドネイティブの概念は中国でますます言及されるようになっていますが、ほとんどの人がクラウドネイテ...
Myhosting は 1997 年に設立されたホスティング会社で、カナダの SoftCom Inc...
オンラインマーケティングを選択する企業はますます増えており、オンラインマーケティングにはさまざまな方...
Canalysの最新データによると、米国市場におけるクラウドインフラサービス支出は2021年第1四半...
まず、感謝の意を表したいと思います。A5 ウェブサイトで私の意見を表明できることを光栄に思います。草...
Baidu は最近非常に熱心に取り組んでおり、頻繁に更新しています。そのため、ウェブマスターとして、...
Cloudcone では、小容量メモリを搭載したマイクロ VPS を 2 つセール中です。セールは ...