Open11

amazon-vpc-cni-k8s

bells17bells17

cni-metrics-helper

概要

  • https://github.com/aws/amazon-vpc-cni-k8s/tree/v1.20.1/cmd/cni-metrics-helper
  • API Serverの /api/v1/namespaces/{namespace}/pods/{podName}:{port}/proxy/metrics のエンドポイントを使って 各CNI PodのCNIコンテナ(k8s-app: aws-node なPodの containerPort: 61678/metrics)からメトリクスデータを収集
  • 収集データをCloud Watchに定期的に送ったり、cni-metrics-helper自体がPrometheusサーバーとしてデータを公開したりする

実装

個別のピックアップ実装

メトリクス取得

Cloud Watchへのデータ送信

bells17bells17

aws-vpc-cni-init

要約

下記2つを行うinit container

実装

bells17bells17

aws-vpc-cni

実装

bells17bells17

aws-k8s-agent

ざっくり理解

今のところざっくり下記の理解

  • Node内のIPアドレス管理をやってる
  • Prefix Delegationを使ってたらPrefix単位でIP管理/使ってなければ1IPずつ管理
  • パラメータ設定に基づいてNodeへのPrefix or IPのENIのアサインを管理(不要な場合の開放も行う)
  • gRPCサーバーを起動していて、CNIからIPの払い出しなどに応じるようになっている
  • Nodeに割り当てたIPとそのPodへの割当は /var/run/aws-node/ipam.json で永続化することで管理している

実装

bells17bells17

amazon-vpc-resource-controller-k8s

bells17bells17

routed-eni-cni-plugin(aws-cni)

ざっくり理解(add)

bells17bells17

aws-network-policy-agent

ざっくり理解

  • rpcサーバーでリクエストを受付
  • Reconcilation Loop: TODO
  • リクエストなどに応じてeBPFプログラムの設定や eBPF Mapの設定を行ってNetwork Policy設定に基づくネットワークフィルタリング設定を行うように設定