Sync Ambient EKS installation doc to latest for Chinese (#16158)

This commit is contained in:
Wilson Wu 2025-01-10 17:48:04 +08:00 committed by GitHub
parent 00ce4eb6bb
commit e89f640e19
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
1 changed files with 38 additions and 5 deletions

View File

@ -73,11 +73,44 @@ spec:
### Amazon Elastic Kubernetes ServiceEKS {#amazon-elastic-kubernetes-service-EKS}
如果您使用已启用 Amazon VPC CNI 的 EKS
[则必须将 `POD_SECURITY_GROUP_ENFORCING_MODE` 明确设置为 `standard`](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md#pod_security_group_enforcing_mode-v1110)
否则 Pod 运行状况探测(默认情况下,该 VPC CNI 会默默地免除所有策略实施)将失败。
这是因为 Istio 对 kubelet 运行状况探测使用链路本地 SNAT 地址,
而 Amazon VPC CNI 对此并不了解,并且该 VPC CNI 没有免除链路本地地址策略实施的选项。
如果您使用 EKS
- 使用亚马逊的 VPC CNI
- 启用 Pod ENI 中继
- **并且**您正在通过 [SecurityGroupPolicy](https://aws.github.io/aws-eks-best-practices/networking/sgpp/#enforcing-mode-use-strict-mode-for-isolating-pod-and-node-traffic)
使用 EKS Pod 附加的安全组
[`POD_SECURITY_GROUP_ENFORCING_MODE` 必须明确设置为 `standard`](https://github.com/aws/amazon-vpc-cni-k8s/blob/master/README.md#pod_security_group_enforcing_mode-v1110)
否则 Pod 运行状况探测将失败。这是因为 Istio 使用链路本地 SNAT 地址来识别 kubelet 运行状况探测,
而 VPC CNI 当前在 Pod 安全组 `strict` 模式下错误路由链路本地数据包。
明确将链路本地地址的 CIDR 排除添加到您的安全组将不起作用,
因为 VPC CNI 的 Pod 安全组模式通过静默路由链路之间的流量来工作,
将它们循环通过中继 `Pod ENI` 以实施安全组策略。
由于[链路本地流量无法跨链路路由](https://datatracker.ietf.org/doc/html/rfc3927#section-2.6.2)
Pod 安全组功能无法将策略强制应用于它们,这是设计约束,并且在 `strict` 模式下会丢弃数据包。
[VPC CNI 组件上有一个未解决的问题](https://github.com/aws/amazon-vpc-cni-k8s/issues/2797)针对此限制。
如果您使用 Pod 安全组VPC CNI 团队目前的建议是禁用 `strict` 模式来解决此问题,
或者为您的 Pod 使用基于 `exec` 的 Kubernetes 探测器,而不是基于 kubelet 的探测器。
您可以通过运行以下命令来检查是否启用了 Pod ENI 中继:
{{< text syntax=bash >}}
$ kubectl set env daemonset aws-node -n kube-system --list | grep ENABLE_POD_ENI
{{< /text >}}
您可以通过运行以下命令来检查集群中是否有任何附加 Pod 的安全组:
{{< text syntax=bash >}}
$ kubectl get securitygrouppolicies.vpcresources.k8s.aws
{{< /text >}}
您可以通过运行以下命令设置 `POD_SECURITY_GROUP_ENFORCING_MODE=standard`
并回收受影响的 Pod
{{< text syntax=bash >}}
$ kubectl set env daemonset aws-node -n kube-system POD_SECURITY_GROUP_ENFORCING_MODE=standard
{{< /text >}}
### k3d