帮助改进此页面
想为本用户指南做出贡献? 选择位于每个页面右侧窗格中的在 GitHub 上编辑此页面链接。您的贡献有助于我们的用户指南为每个人提供更充分的参考。
从旧版 Pod 安全策略(PSP)迁移
PodSecurityPolicy
已在 Kubernetes 1.21 中弃用1.25
中移除。如果您在集群中使用 PodSecurityPolicy,则必须先迁移到内置的 Kubernetes 容器组(pod)安全标准 (PSS) 或策略即代码解决方案,然后再将集群升级到版本 *1.25
,以避免工作负载中断。* 选择任何常见问题以了解更多信息。
PodSecurityPolicy
这是 Kubernetes 项目的上游更改,而不是 Amazon EKS 中的更改。PSP 已在 Kubernetes 1.21
中弃用并在 Kubernetes 1.25
中移除。Kubernetes 社区发现了严重的 PSP 可用性问题。其中包括意外授予比预期更广泛的权限,以及难以检查在给定情况下哪个 PSPs 适用。如果不进行重大更改,则无法解决这些问题。这是 Kubernetes 社区决定移除 PSP
要确定自己是否在集群中使用 PSPs,您可以运行以下命令:
kubectl get psp
要查看您的集群中的 PSPs 影响的 Pods,请运行以下命令。此命令输出 Pod 名称、命名空间和 PSPs:
kubectl get pod -A -o jsonpath='{range.items[?(@.metadata.annotations.kubernetes\.io/psp)]}{.metadata.name}{" "}{.metadata.namespace}{" "}{.metadata.annotations.kubernetes\.io/psp}{" "}'
在将集群升级到 1.25
之前,您必须将您的 PSPs 迁移到以下任一备选方案:
-
Kubernetes PSS.
-
来自 Kubernetes 环境的策略即代码解决方案。
为了应对 PSP 弃用以及从一开始就控制 Pod 安全的持续需求,Kubernetes 社区创建了一个包含(PSS)
您可以查看 EKS 最佳实践指南
策略即代码解决方案提供防护机制来指导集群用户,并通过规定的自动控件来防止不需要的行为。策略即代码解决方案通常使用 Kubernetes 动态准入控制器
有几种开源策略即代码解决方案可供 Kubernetes 使用。要查看将 PSPs 迁移到策略即代码解决方案的最佳实践,请参阅 GitHub 上容器组(pod)安全页面的策略即代码
带 Kubernetes 版本 1.13
或更高版本的 Amazon EKS 集群具有名为 eks.privileged
的默认 PSP。此策略在 1.24
及更早版本的集群中创建。它不在 1.25
及更高版本的集群中使用。Amazon EKS 会自动将此 PSP 迁移到基于 PSS 的强制实施中。您无需执行任何操作。
不会。除了 eks.privileged
(由 Amazon EKS 创建的 PSP)之外,升级到 1.25
时,不会对集群中的其他 PSPs 进行任何更改。
不会。如果您尚未迁移出 PSP,Amazon EKS 将不会阻止集群更新到版本 1.25
。
当包含 PSP 的集群升级到 Kubernetes 版本 1.25
时,API 服务器不会识别 1.25
中的 PSP 资源。这可能会导致 Pods 获得错误的安全范围。有关含义的详尽列表,请参阅从 PodSecurityPolicy 迁移到内置的 PodSecurity Admission 准入控制器
我们预计不会对 Windows 工作负载产生任何特定影响。PodSecurityContext 在适用于 Windows Pods 的 PodSpec v1
API 中有一个名为 windowsOptions
的字段。这会使用 Kubernetes 1.25
中的 PSS。有关强制执行 Windows 工作负载的 PSS 的更多信息和最佳实践,请参阅 EKS 最佳实践指南