このページの改善にご協力ください
本ユーザーガイドの改善にご協力いただけませんか? このページの下部までスクロールし、[GitHub でこのページの編集] を選択します。皆さまにご協力いただくことで、あらゆる人々に使いやすいユーザーガイドになります。
個々の pods にセキュリティグループを割り当てる
適用対象: Amazon EC2 インスタンスを持つ Linux ノード
適用対象: プライベートサブネット
Pods のセキュリティグループは、Amazon EC2 セキュリティグループを Kubernetes Pods と統合します。Amazon EC2 セキュリティグループを使用して、多くの Amazon EC2 インスタンスタイプと Fargate で実行されているノードにデプロイする Pods との間のインバウンドおよびアウトバウンドのネットワークトラフィックを許可するルールを定義できます。この機能の詳細な説明については、「Introducing security groups for Pods
Amazon VPC CNI plugin for Kubernetes 機能との互換性
Podsのセキュリティグループは以下の機能で使用できます。
-
IPv4 ソースネットワークアドレス変換 - 詳細については、「podsのアウトバウンドインターネットアクセスを有効にする」を参照してください。
-
クラスター、ポッド、サービスへの IPv6 アドレス - 詳細については、「クラスター、pods、サービスに IPv6 アドレスを割り当てる」を参照してください。
-
Kubernetes ネットワークポリシーを使用したトラフィックの制限 - 詳細については、「Kubernetes ネットワークポリシーによりpodトラフィックを制限する」を参照してください。
考慮事項
Pods のセキュリティグループをデプロイする前に、次の制限事項と条件を考慮してください。
-
Pods のセキュリティグループは、Windows ノードでは使用できません。
-
Pods のセキュリティグループは、バージョン 1.16.0 以降の、Amazon VPC CNI プラグインを使用して、Amazon EC2 ノードを含む
IPv6
ファミリー用に設定されたクラスターで使用できます。バージョン 1.7.7 以降の Amazon VPC CNI プラグインを使用すると、Fargate ノードのみを含むクラスター設定のIPv6
ファミリーで Pods のセキュリティグループを使用できます。詳細については、「クラスター、pods、サービスに IPv6 アドレスを割り当てる」を参照してください。 -
Pods のセキュリティグループは、ほとんどの Nitro ベースの Amazon EC2 インスタンスファミリーでサポートされていますが、ファミリーの全世代がサポートしているわけではありません。例えば、
m5
、c5
、r5
、m6g
、、c6g
、r6g
インスタンスファミリーと世代ではサポートされています。t
ファミリーのインスタンスタイプは一切サポートされていません。サポートされているインスタンスタイプの完全なリストについては、GitHub の limits.goファイルを参照してください。ノードは、そのファイルで一覧表示されているインスタンスタイプのうち、 IsTrunkingCompatible: true
を含むものである必要があります。 -
Pod のセキュリティポリシーを使用して Pod 変更へのアクセスを制限している場合、
eks:vpc-resource-controller
Kubernetes ユーザーは、psp
が割り当てられたrole
に対して KubernetesClusterRoleBinding
で指定する必要があります。デフォルトの Amazon EKS のpsp
、role
およびClusterRoleBinding
を使用している場合、これはeks:podsecuritypolicy:authenticated
ClusterRoleBinding
です。例えば、次の例に示すように、ユーザーをsubjects:
セクションに追加します。[...] subjects: - kind: Group apiGroup: rbac.authorization.k8s.io name: system:authenticated - apiGroup: rbac.authorization.k8s.io kind: User name: eks:vpc-resource-controller - kind: ServiceAccount name: eks-vpc-resource-controller
-
カスタムネットワークと Pods のセキュリティグループを組み合わせて使用している場合、
ENIConfig
で指定されたセキュリティグループではなく、Pods のセキュリティグループによって指定されたセキュリティグループが使用されます。 -
Amazon VPC CNI プラグインのバージョン
1.10.2
以前を使用していて、Pod 仕様にterminationGracePeriodSeconds
設定を含める場合は、設定の値を「0」にすることはできません。 -
Amazon VPC CNI プラグインのバージョン
1.10
以前、またはデフォルト設定が1.11
=POD_SECURITY_GROUP_ENFORCING_MODE
のバージョンstrict
を使用している場合、Kubernetes がNodePort
に設定されたインスタンスターゲットを使用するタイプLoadBalancer
およびexternalTrafficPolicy
のLocal
サービスは、セキュリティグループを割り当てる Pods ではサポートされていません。インスタンスターゲットでのロードバランサーの使用の詳細については、「Network Load Balancers で TCP および UDP トラフィックをルーティングする」を参照してください。 -
Amazon VPC CNI プラグインのバージョン
1.10
以降、またはデフォルト設定がPOD_SECURITY_GROUP_ENFORCING_MODE
=strict
のバージョン1.11
を使用している場合、セキュリティグループが割り当てられた Pods からのアウトバウンドトラフィックに対してソース NAT が無効になり、その結果アウトバウンドセキュリティグループルールが適用されます。インターネットにアクセスするには、セキュリティグループが割り当てられた Pods を、NAT ゲートウェイまたはインスタンスで構成されたプライベートサブネットにデプロイされたノードで起動する必要があります。パブリックサブネットにデプロイされたセキュリティグループが割り当てられた Pods は、インターネットにアクセスできません。POD_SECURITY_GROUP_ENFORCING_MODE
=standard
に設定されたプラグインのバージョン1.11
以降を使用している場合、VPC の外部を送信先とする Pod トラフィックは、インスタンスのプライマリネットワークインターフェイスの IP アドレスに変換されます。このトラフィックには、Pod's のセキュリティグループ内のルールではなく、プライマリネットワークインターフェイスのセキュリティグループ内のルールが適用されます。 -
セキュリティグループが関連付けられている Pods で Calico ネットワークポリシーを使用するには、Amazon VPC CNI プラグインのバージョン
1.11.0
以降を使用し、かつPOD_SECURITY_GROUP_ENFORCING_MODE
=standard
に設定することが必要になります。それ以外の場合、関連付けられたセキュリティグループを持つ Pods との間のトラフィックフローに、Calico ネットワークポリシー は適用されず、Amazon EC2 セキュリティグループの適用のみに限定されます。Amazon VPC CNI バージョンを更新するには、「Amazon VPC CNI を使用してPodsに IP を割り当てる」を参照してください -
NodeLocal DNSCache
を使用するクラスターのセキュリティグループを使用する Amazon EC2 ノードで実行されているPodsは、Amazon VPC CNI プラグインのバージョンが 1.11.0
以降でPOD_SECURITY_GROUP_ENFORCING_MODE
=standard
に設定されている場合にのみサポートされます。Amazon VPC CNI プラグインのバージョンを更新するには、「Amazon VPC CNI を使用してPodsに IP を割り当てる」を参照してください -
Pods のセキュリティグループは、解約率が高い Pods の場合、Pod の起動レイテンシーより高くなる可能性があります。これは、リソースコントローラーのレート制限によるものです。
-
EC2 セキュリティグループのスコープはPodレベル - 詳細については、「セキュリティグループ」を参照してください。
POD_SECURITY_GROUP_ENFORCING_MODE=standard
およびAWS_VPC_K8S_CNI_EXTERNALSNAT=false
を設定した場合、VPC 外部のエンドポイント宛てのトラフィックは、Podのセキュリティグループではなくノードのセキュリティグループを使用します。