CNI 設定変数 - Amazon EKS

「翻訳は機械翻訳により提供されています。提供された翻訳内容と英語版の間で齟齬、不一致または矛盾がある場合、英語版が優先します。」

CNI 設定変数

Kubernetes 向け Amazon VPC CNI プラグインでは、多数の設定オプションがサポートされており、環境変数を通じて設定します。次の環境変数を使用できます。すべてオプションです。

AWS_VPC_CNI_NODE_PORT_SUPPORT

タイプ – ブール値

デフォルトtrue

ノードのプライマリネットワークインターフェイスでNodePortサービスを有効にするかどうかを指定します。これには、追加の iptables ルールと、プライマリインターフェイスのカーネルのリバースパスフィルターが loose に設定されていることが必要です。

AWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG

タイプ – ブール値

デフォルトfalse

ポッドが、クラスターの に依存しないサブネットおよびセキュリティグループ (コントロールプレーンリソースと同じ VPC 内) resourcesVpcConfig を使用できるかどうかを指定します。 デフォルトでは、ポッドはノードのプライマリインターフェイスと同じサブネットとセキュリティグループを共有します。この変数を設定してtrueipamD がノード内のセキュリティグループとサブネットをネットワークインターフェイスの割り当てに使用します。ENIConfigポッドが存在する各サブネットにENIConfigカスタムリソース定義を作成し、特定の を使用するために各ノードに注釈を付ける必要があります ENIConfig (複数のノードに同じ を使用して注釈を付けることができますENIConfig)。ノードに注釈を設定できるのは一度に 1 つのみです。また、 のサブネットはノードが存在するのと同じものに属するENIConfig必要があります。ENIConfigアベイラビリティーゾーン詳細については、を参照してください CNI カスタムネットワーク

ENI_CONFIG_ANNOTATION_DEF

タイプ – 文字列

デフォルトk8s.amazonaws.com/eniConfig

ノードアノテーションキー名を指定します。これは、次の場合に使用する必要がありますAWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true。 注釈値はENIConfig名前を設定するために使用されます。アノテーションはラベルよりも優先されます。

ENI_CONFIG_LABEL_DEF

タイプ – 文字列

デフォルトk8s.amazonaws.com/eniConfig

ノードラベルのキー名を指定します。これは、次の場合に使用する必要がありますAWS_VPC_K8S_CNI_CUSTOM_NETWORK_CFG=true。 ラベル値はENIConfig名前を設定するために使用されます。アノテーションはラベルよりも優先されます。ラベルを使用するには、キー k8s.amazonaws.com/eniConfig を持つアノテーションが定義されており、アノテーションキー ENI_CONFIG_ANNOTATION_DEF の値がノードで設定されていないことを確認してください。ENIConfigに基づいて を選択するには、これを アベイラビリティーゾーン に設定failure-domain.beta.kubernetes.io/zoneし、 ENIConfig などの ごとに アベイラビリティーゾーン カスタムリソースを作成しますus-east-1a。 詳細については、「」を参照してくださいCNI カスタムネットワーク

AWS_VPC_ENI_MTU – v1.6.0 以降

タイプ – 整数

デフォルト9001

アタッチされた の MTU サイズを設定するために使用されますENIs。 有効な範囲は ~ 576 です。9001

AWS_VPC_K8S_CNI_EXTERNALSNAT

タイプ – ブール値

デフォルトfalse

セカンダリネットワークインターフェイス IP アドレスの SNAT を提供するために外部 NAT ゲートウェイを使用するかどうかを指定します。trueに設定した場合、SNAT iptables ルールとオフ VPC IP ルールは適用されず、これらのルールがすでに適用されている場合は削除されます。

外部 、直接接続、外部 VPNs からポッドへのインバウンド通信を許可する必要があり、ポッドがインターネットゲートウェイ経由で直接インターネットにアクセスする必要がない場合は、SNAT VPCs を無効にします。ノードがプライベートサブネットで実行され、AWS NAT ゲートウェイまたは別の外部 NAT デビス経由でインターネットに接続している必要があります。

詳細については、を参照してください 外部ソースネットワークアドレス変換 (SNAT)

AWS_VPC_K8S_CNI_RANDOMIZESNAT

タイプ – 文字列

デフォルトhashrandom

有効な値 hashrandom , prng ,none

SNAT iptables ルールが接続の送信ポートをランダム化するかどうかを指定します。これは、次の場合に使用する必要がありますAWS_VPC_K8S_CNI_EXTERNALSNAT=false。 有効にすると (hashrandom)、--randomフラグが SNAT iptables ルールに追加されます。ハッシュベース (--random-fully) ではなく擬似乱数生成を使用するには、環境変数に prng を使用します。をサポートしていない の古いバージョンでは、このオプションは iptables にフォールバックします。--random-fully--random 送信接続の順次ポート割り当てに依存している場合は、この機能を無効にします (none)。

注記

none 以外のオプションを使用すると、送信接続にソースポートが割り当てられますが、これは OS レベルで設定されたエフェメラルポート範囲の一部であるとは限りません (/proc/sys/net/ipv4/ip_local_port_range)。これは、 で見つかったポート範囲に基づいてトラフィックNACLsを制限する場合に関係ip_local_port_rangeします。

AWS_VPC_K8S_CNI_EXCLUDE_SNAT_CIDRS – v1.6.0 以降

タイプ – 文字列

デフォルト – 空

SNAT から除外IPv4CIDRsする のカンマ区切りリストを指定します。リスト内のすべての項目に、iptables ルールとオフ VPC IP ルールが適用されます。項目が有効なIPv4範囲にない場合はスキップされます。これは、AWS_VPC_K8S_CNI_EXTERNALSNAT=false の場合に使用する必要があります。

WARM_ENI_TARGET

タイプ – 整数

デフォルト1

ipamDデーモンがノードのポッド割り当てに使用できるようにしておく必要があるフリーのネットワークインターフェイス (およびそのすべての使用可能な IP アドレス) の数を指定します。デフォルトでは、 ipamDは 1 つのネットワークインターフェイスとそのすべての IP アドレスをポッドの割り当て用に維持します。

注記

各ネットワークインターフェイスの IP アドレスの数は、インスタンスタイプによって異なります。詳細については、次のガイドで各インスタンスタイプのネットワークインターフェイスごとの IP アドレスを参照してくださいLinux インスタンス用 Amazon EC2 ユーザーガイド

たとえば、m4.4xlarge は 1 つのネットワークインターフェイスと 30 個の IP アドレスを持って起動されます。ノードに 5 つのポッドが配置され、5 つのフリーの IP アドレスが IP アドレスウォームプールから削除されると、ipamDWARM_ENI_TARGET フリーインターフェイスがノードで使用できるようになるまで追加のインターフェイスを割り当てようとします。

注記

WARM_IP_TARGET が設定されると、この環境変数は無視され、代わりにWARM_IP_TARGET 動作が使用されます。

WARM_IP_TARGET

タイプ – 整数

デフォルト – なし

ipamD​ デーモンがノード上のポッド割り当てに使用できるようにしておく必要があるフリーの IP アドレスの数を指定します。たとえば、WARM_IP_TARGET​ が 10 に設定されると、ipamD​ は常に 10 個のフリーの IP アドレスを維持しようとします。ノードの Elastic Network Interface がフリーのアドレスを提供できない場合、ipamDWARM_IP_TARGET フリー IP アドレスが使用できるようになるまでより多くのインターフェイスの割り当てを試みます。

注記

この環境変数は WARM_ENI_TARGET 動作をオーバーライドします。

MINIMUM_IP_TARGET – v1.6.0 以降

タイプ – 整数

デフォルト – なし

ipamDデーモンがノード上のポッド割り当てに割り当てようとするべき合計 IP アドレスの数を指定します。MINIMUM_IP_TARGETWARM_IP_TARGETは と同じように動作しますが、無料 IP アドレスのターゲット数を設定し、常に利用できるようにしておくのではなく、割り当てられた全 IP アドレス数の下限にターゲット数を設定する点が異なります。

MINIMUM_IP_TARGET は事前スケーリング用で、WARM_IP_TARGET は動的スケーリング用です。たとえば、クラスターの予想ポッド密度がノードあたり約 30 ポッドであるとします。CNI によって最初に十分な割り当てが行われるように WARM_IP_TARGETを 30 に設定すると、30 個のポッドがノードにデプロイされます。IPsCNI は、さらに 30 個の IPs を割り当て、合計 60 個の で、関連するサブネットの IP 枯渇を向上させます。代わりに、 MINIMUM_IP_TARGETが 30 に設定され、30 個のポッドがデプロイされた後、2 に設定されている場合、CNI は追加の 2 を割り当てますWARM_IP_TARGET。IPs これは伸縮性を提供しますが、 単独で使用するIPsよりも約半分 (32 IP アドレスと 60 IP アドレス) を使用します。WARM_IP_TARGET

また、特にスケーリング時に、プライベート IP アドレスの割り当てまたは割り当て解除に必要な呼び出しの数も減るため、クラスターの信頼性も向上します。

MAX_ENI

タイプ – 整数

デフォルト – なし

ノードにアタッチされるネットワークインターフェイスの最大数を指定します。MAX_ENIが設定されていないか、 0 以下の場合、設定は使用されず、ネットワークインターフェイスの最大数は常に問題のインスタンスタイプの最大数に等しくなります。MAX_ENI が正の数であっても、インスタンスタイプの最大数によって制限されます。

AWS_VPC_K8S_CNI_LOGLEVEL

タイプ – 文字列

デフォルト値 – DEBUG

有効な値DEBUGINFOWARNERRORFATAL (大文字と小文字は区別されません)

ipamd のログレベルを指定します。

AWS_VPC_K8S_CNI_LOG_FILE

タイプ – 文字列

デフォルト値 – 未設定

有効な値: stdoutまたはファイルパス

のログ出力を書き込む場所を指定しますipamd。 デフォルトファイル ( など) を指定stdoutまたは上書きできます/var/log/aws-routed-eni/ipamd.log

AWS_VPC_K8S_PLUGIN_LOG_FILE

タイプ – 文字列

デフォルト値 – 未設定

有効な値stdout またはファイルパス。

aws-cni プラグインのログ出力を書き込む場所を指定します。stdout を指定するか、/var/log/aws-routed-eni/plugin.log などのデフォルトファイルを上書きできます。

AWS_VPC_K8S_PLUGIN_LOG_LEVEL

タイプ – 文字列

デフォルト値 – DEBUG

有効な値DEBUGINFOWARNERRORFATAL (大文字と小文字は区別されません)

aws-cni プラグインのログレベルを指定します。

INTROSPECTION_BIND_ADDRESS

タイプ – 文字列

デフォルト127.0.0.1:61679

詳細分析エンドポイントのバインドアドレスを指定します。Unix ドメインソケットは、ソケットパスの前に unix: プレフィックスを付けて指定することができます。

DISABLE_INTROSPECTION

タイプ – ブール値

デフォルト値 – false

ノードで詳細分析エンドポイントを無効にするかどうかを指定します。これを true に設定すると、aws-cni-support.sh スクリプトの実行時にノードから取得できるデバッグ情報が減少します。

DISABLE_METRICS

タイプ – ブール値

デフォルト値 – false

Prometheus メトリクスエンドポイントを で無効にするかどうかを指定しますipamd。 デフォルトでは、 メトリクスは で発行されます:61678/metrics

AWS_VPC_K8S_CNI_VETHPREFIX

タイプ – 文字列

デフォルトeni

CNI のホスト側 veth デバイス名の生成に使用する veth プレフィクスを指定します。プレフィックスの長さは 4 文字までです。

ADDITIONAL_ENI_TAGS – v1.6.0 以降

タイプ – 文字列

デフォルト{}

値の例{"tag_key": "tag_val"}

ネットワークインターフェイスに適用されるメタデータは、請求などの目的でリソースを分類および整理するのに役立ちます。各タグはカスタム定義キーとオプションの値で構成されます。タグキーには最大 128 文字を含めることができます。タグの値に使用できるのは 256 文字までです。タグは、ホスト上のすべてのネットワークインターフェイスに追加されます。

重要

カスタムタグには k8s.amazonaws.com プレフィックスを含めないでください。このプレフィックスは予約されています。タグに k8s.amazonaws.com が含まれている場合、そのタグの追加は無視されます。

CLUSTER_NAME

タイプ – 文字列

デフォルト""

割り当てられたネットワークインターフェイスにタグ付けするクラスター名を指定します。

割り当てに関連するネットワークインターフェイスのタグ

このプラグインは、ネットワークインターフェイスで次のタグを操作します。

  • cluster.k8s.amazonaws.com/name

  • node.k8s.amazonaws.com/instance_id

  • node.k8s.amazonaws.com/no_manage

クラスター名タグ

タグcluster.k8s.amazonaws.com/nameは、ネットワークインターフェイスを作成したaws-nodeデーモンセットのクラスター名に設定されます。

インスタンス ID タグ

タグnode.k8s.amazonaws.com/instance_idは、このネットワークインターフェイスを割り当てたaws-nodeインスタンスのインスタンス ID に設定されます。

管理タグなし

node.k8s.amazonaws.com/no_manageタグはaws-node、マシンにアタッチされたネットワークインターフェイスをプライベート IP アドレス用に構成したり使用したりすべきでないかどうかを判断するために、デーモンセットによって読み取られます。このタグは CNI プラグイン自体によって設定されるのではなく、ネットワークインターフェイスがホストネットワーキングポッド用であるか、Kubernetes とは無関係な他のプロセス用であるかを示すためにユーザーが設定できます。

注記

no_manageタグを使用してネットワークインターフェイスをアタッチすると、 kubeletの設定オプションの値が正しくなくなります。--max-podsこのタグを使用する場合、このプラグインと kubelet で、それぞれ設定オプション MAX_ENI--max-pods 設定オプションを更新することを検討してください。

コメント

すべてのノードで実行されている L-IPAMD ( aws-nodedaemonSet) には、Kubernetes API サーバーへのアクセスが必要です。Kubernetes API サーバーに到達できない場合、ipamD が終了し、CNI はポッドの IP アドレスを取得できなくなります。L-IPAMD が Kubernetes API サーバーにアクセスできるかどうかを確認すには、次のようにします。

kubectl get svc kubernetes

出力

NAME TYPE CLUSTER-IP EXTERNAL-IP PORT(S) AGE kubernetes ClusterIP <10.0.0.1> <none> 443/TCP 29d

ノードに SSH 接続して、ノードが API サーバーにアクセスできるかどうかを確認します。

telnet <10.0.0.1> 443

出力

Trying 10.0.0.1... Connected to 10.0.0.1. Escape character is '^]'.

出力の最後の行を受け取った場合、Kubernetes API サーバーにアクセスできます。