Kubernetes(K8s)を使用して、仕事中またはトレーニングコースでその内部動作の一部を学習しようとした場合は、Container Network Interface(CNI)について少し学習している必要があります。この記事では、CNIの意味と機能をわかりやすく説明しています。
CNIとは何ですか?
CNIプラグインは、ネットワークインターフェイスをコンテナネットワーク名前空間(たとえば、仮想イーサネット(veth)ペアの一方の端)に挿入し、ホストで必要な変更を加える(たとえば、vethのもう一方の端をブリッジに接続する)役割を果たします。 )。次に、インターフェイスにIPアドレスを割り当て、適切なIPアドレス管理(IPAM)プラグインを呼び出して、[IPアドレス管理]セクションと一致するルートを設定します。
[次のこともお勧めします:基本的なKubernetesコンポーネントのシステム管理者ガイド]
CNIはどこに適合しますか?
CNIは、Kubernetes(以下に示す)などのコンテナランタイムや、Podman、CRI-O、Mesosなどで使用されます。
コンテナ/ポッドには、最初はネットワークインターフェイスがありません。コンテナランタイムは、 ADDなどの動詞を使用してCNIプラグインを呼び出します 、 DEL 、チェック 、など。ADDは、コンテナの新しいネットワークインターフェイスを作成し、追加される内容の詳細はJSONペイロードを介してCNIに渡されます。
CNIプロジェクトは何で構成されていますか?
- CNI仕様-CNIプラグインを呼び出すときの構成形式、その情報をどのように処理するか、およびプラグインが返す結果を文書化します。
- リファレンスプラグインとサンプルプラグインのセット-これらは、新しいプラグインの作成方法や既存のプラグインの動作を理解するのに役立ちます。それらはクラウドに依存しません。これらは機能が制限されたプラグインであり、参照用です。
CNI仕様
- ベンダーに中立な仕様
- Mesos、CloudFoundry、Podman、CRI-Oで使用
- 基本的な実行フローと構成形式を定義します
- 物事をシンプルかつ下位互換性を保つように努める
CNIプラグインの実行フロー
- コンテナランタイムがコンテナでネットワーク操作を実行することを期待している場合、(K8sの場合のkubeletのように)目的のコマンドでCNIプラグインを呼び出します。
- コンテナランタイムは、関連するネットワーク構成とコンテナ固有のデータもプラグインに提供します。
- CNIプラグインは必要な操作を実行し、結果を報告します。
CNIはK8s(kubelet)によって2回呼び出され、ループバックを設定します およびeth0 ポッドのインターフェース。
注 :CNIプラグインは実行可能であり、上記で説明したように、ADD、DEL、CHECK、VERSIONコマンドをサポートします。
複数のプラグインがあるのはなぜですか?
CNIは、さまざまなプラグインの仕様を提供します。ご存知のように、ネットワーキングはさまざまなユーザーニーズを持つ複雑なトピックです。したがって、さまざまなユースケースを満たすために異なる動作をする複数のCNIプラグインがあります。
[この無料のチートシートでKubernetesの使用の基本を学びます。 ]
まとめ
Kubernetesを使用したコンテナのオーケストレーションと管理には多くの側面があります。 Kubernetes内のネットワーキングでのCNIの使用法について少し学びました。詳細については、GitHubのCNIプロジェクトページをご覧ください。