简介
亚马逊弹性 Kubernetes 服务(
亚马逊 EKS
)团队很高兴地宣布支持亚马逊 EKS 和亚马逊 EKS 发行版的 Kubernetes 1.25 版。
亚马逊 EKS Anywher
e (版本 0.14.2)也支持 Kubernetes 1.25。选择此版本的主题是为了表彰该项目所包含的不同组成部分以及为该项目做出贡献的个人。因此,合适的版本名称为 “Combiner”。Combiner 强调了开源的协作性质及其对 Kubernetes 的总体影响和具体影响。Kubernetes 发布团队表示:“通过此次发布,我们希望尊重协作、开放的精神,这种精神使我们从分散在全球各地的孤立开发者、作家和用户转变为能够改变世界的联合力量。”
升级的先决条件
如今,当发布新版本的 Kubernetes 时,API 版本被弃用的情况并不少见。发生这种情况时,必须更新所有引用这些已过时 API 的清单和控制器。版本 1.25 中已弃用的 API 版本列表可在过时
API 迁移
指南中找到。 在 1.25 中删除的 API 版本中有 d
iscovery
.k8s.io/v1beta1 API。如果您使用带有
启用端点切片
标志的 亚马逊云科技 负载均衡器控制器,则在升级到 Kubernetes 1.25
之前
,必须将控制器升级到 2.4.7。如果您不确定当前正在运行的控制器版本,则可以运行以下命令来获取版本号:
kubectl get deployment aws-load-balancer-controller -n kube-system -o jsonpath='{.spec.template.spec.containers[*].image}'
版本号将出现在冒号之后,例如
public.ecr.aws/eks/aws-load-balancer-controller:v2.4.7.
有关安装/升级到 亚马逊云科技 负载均衡器控制器最新版本的说明可在文档中找到。
在升级到 EKS 1.25 之前未能将控制器升级到 v2.4.7 可能会导致工作负载中断。
Kubernetes 1.25 亮点
这篇文章介绍了 Kubernetes 版本 1.25 版本中的一些增强功能。最显著的变化是移除了 Pod 安全策略 (PSP)。自 Kubernetes 1.21 中弃用以来,PSP 已被 P
od 安全准入 (PSA) 控制器
所取代。 PSA 已在 1.25 中逐步稳定下来。此外,还引入或改进了许多安全更改。一些与安全相关的功能包括
网络策略端口范围
以及使用 RuntimeDefault 作为默认
secco mp 配置
文件。 另一个与安全相关的开发是
删除了此版本附带的 CoreDNS 插件 中的通配符查询
。还值得注意的是,人们一直在努力摆脱树内存储驱动程序。在 Kubernetes 1.25 中,一些存储插件已被
移除
,容器存储接口 (CSI) 迁移已升级为稳定版。
要查看增强功能的完整列表,可以参阅 Kubernetes 更改日志。
Pod Security Stable 和 Pod 安全政策的毕业生被移除
从 Kubernetes 1.23 开始,PSA 是作为测试版功能推出的,目的是接替 PSP 实施 pod 安全措施。这些措施由
Pod 安全标准 (PSS)
定义 ,允许您在命名空间级别上限制 Pod 的行为。在 Kubernetes 1.25 中,PSA 是稳定的,在亚马逊 EKS 中默认处于启用状态。相反,PSP 现已从 Kubernetes API 中完全移除,将无法使用。对于希望将其工作负载从 PSP 迁移到 PSA 的客户,
这篇文章
为过渡提供了指导。Kubernetes 官方文档也为这种迁移提供了
帮助。
您也可以参考我们的
PSP 移除常见问题解答
。正如 Amazon
EKS 最佳实践指南
中所述 ,客户还可以考虑使用开源策略即代码 (PaC) 解决方案作为 PSA 的替代方案。有关
亚马逊 EKS 附加组件
与亚马逊 EKS 1.25 兼容性的更多信息,请参阅
此文档
。
临时容器达到稳定状态
临时容器最初 是在 Kuber
netes 1.16 中作为特殊用途容器引入的,旨在增强调试正在运行的 pod 的过程。临时容器与你打算调试的正在运行的 Pod 部署在同一个命名空间中,并且可以访问其容器的文件系统和进程命名空间。这些类型的容器对于故障排除练习很有用,但不适用于正常的应用程序部署。因此,无法像通常使用端口、ReadinessProbes 和 LivenessProbes 等字段的其他容器那样配置它们。此功能现已正式上线,允许您在 Amazon EKS 1.25 中调试和运行工作负载。
网络策略端口范围稳定
在以前的 Kubernetes 版本中,使用网络策略应用端口限制时,必须指定规则应适用的每个目标端口。随着 EndPort 升级为稳定版,客户现在可以申报端口范围,从而简化限制流程。如果没有网络策略,默认情况下,Kubernetes 集群上的所有 Pod 都可以相互通信。这种设计简化了最初的采用,并且仍然是默认配置。但是,强烈建议对生产工作负载采用网络策略,以保护 Pod 之间东西向的网络连接。网络策略实施基于允许的防火墙规则。亚马逊 EKS 为容器网络安装
亚马逊 VPC CNI
,它是默认的
容器网络接口 (CNI
)。 截至今天,亚马逊EKS与政策引擎C
alico
、
Cilium
和
Weave
等兼容。您可以在 EKS 网络
最佳实践指南中阅读有关在 Amazon EKS 中实施网络策略的
更多信息 。
SeccompDefault 配置文件现已
Seccomp 是 Linux 内核中的一项安全功能,可用于限制节点上容器的行为。鉴于运行容器工作负载会带来许多安全风险,seccomp 配置文件的使用变得越来越重要。在亚马逊 EKS 1.25 中,此功能默认处于禁用状态。因此,希望在其节点上应用这些严格的安全配置文件的客户必须启用此功能并在配置 kubelet 时应用 —seccomp-default 标志。节点将使用 runtimeDefault seccomp 配置文件,而不是不受限制(即禁用 seccomp)模式。在某些情况下,并非所有容器都需要相同级别的系统调用限制,因此您可以为某些工作负载设置自定义 seccomp 配置文件。或者,您可以使用 RuntimeDefault seccomp 配置文件将污点应用于专用节点,并部署需要更高限制级别和适当容忍度的精选工作负载。客户还可以使用
Kubernetes 安全配置文件
来创建和传播 seccomp 配置文件,以加强其节点的安全性。
Cgroups v2 是稳定的
控制组 (Cgroup)
是一项 Linux 内核功能,允许您管理运行进程的资源。使用 Cgroups,你可以分配和限制 CPU、内存、网络、磁盘 I/O 等的使用量。这项特殊增强与 Kubernetes 与 Cgroups API 版本 2 的兼容性有关,该版本现已在 1.25 中保持稳定。在亚马逊 EKS 1.25 中使用 Cgroups v2 时,客户应
查看新的配置值
, 以了解资源值范围的一些变化(即 cpu.weight 从 [2-262144] 更改为 [1-10000])。目前,EKS 没有提供支持 cgroups v2 的优化 AMI。目前正在本
期
跟踪其可用性 。
DaemonSet maxSurge 处于稳定状态
借助此功能,客户可以控制在
滚动更新
期间可以创建的最大容量来代替旧容器 。要利用这一点,你可以将所需的容器数量值添加到 spec.Strategy.RollingUpdate.maxSurge 可选字段中。该值也可以表示为现有所需容器的百分比。此功能已升级为稳定版,在亚马逊 EKS 1.25 中默认处于启用状态。
本地临时存储容量隔离稳定
Kubernetes 支持持久存储和 临时存储。
临时存储对于缓存、在多容器 pod 之间共享瞬态数据和日志记录等操作很有用。此功能在 Kubernetes 1.7 中首次引入,它为你提供了一种隔离和限制 Pod 消耗的本地临时存储空间的方法。与 CPU 和内存资源管理类似,您可以设置限制,也可以通过资源请求预留临时存储。Pod 的本地临时存储共享其生命周期,并且不会超出生命周期。通过使用硬性限制,可以在 Pod 超过各自配置的容量时将其驱逐。在 Kubernetes 1.25 中,此功能
现已正式发布(GA)。
核心 CSI 迁移是稳定的
引入容器存储接口 (CSI) 迁移是为了解决编码到 Kubernetes 中的树内存储插件的复杂性。目标是用相应的树外 CSI 驱动程序(
如亚马逊 EBS
CSI)替换这些树内插件。 这种方法将存储提供程序插件与 Kubernetes 源代码分离,从而改善了 Kubernetes 和存储提供商插件的维护。CSI 迁移现已正式上线 (GA),允许使用通过 CSI 与集群上的工作负载交互的驱动程序。在亚马逊 EKS 1.25 中,亚马逊 EBS CSI 迁移默认处于启用状态。但是,要使用亚马逊 EBS 卷存储 StorageClass、PersistentVolume 和 PersistentVolumeClaim 等资源,则需要将相应的亚马逊 EBS CSI 驱动程序作为亚马逊 EKS 插件进行安装。但是,这种特殊的发展不适用于没有任何树内 CSI 驱动程序的亚马逊 EKS-A。
其他更新
亚马逊云科技 IAM 身份验证器的更新
亚马逊 EKS 1.25 还包括对集群身份验证的增强。如果 YAML 值以宏开头(即第一个字符是大括号),则必须在 a
ws-auth
ConfigMap(位于
kube-syst
em 命名空间中)的花括号前后添加双引号。这是确保准确解析亚马逊 EKS 1.25 中使用的 aws-
i
am-authenticator v0.6.3 的 a
ws-auth
ConfigMap 所必需的。例如,如果您在
aws-auth ConfigMap 中将用户名设置为 {{sess
ionName}}
,不带任何双引号,例如:
username: {{SessionName}}
那么你必须将其更新
为 “{{sessionName}}”。
但是,如果第一个字符不是大括号,例如:
username: admin:{{SessionName}}
则无需采取任何行动。如果您不进行此更改,则可能会导致集群中的身份验证失败。
结论
客户现在可以创建运行 Kubernetes 版本 1.25 的 EKS 集群,并受益于本文中重点介绍的功能以及发行说明中记录的其他增强功能。
对于当前运行 PSP 的客户,强烈建议您在迁移到 PSA 或 PaC 解决方案时规划工作负载迁移。如果您在将集群升级到最新的 Amazon EKS 版本时需要帮助,则可以在
此处
参考我们的文档 。
如果你仍在运行 Kubernetes 的旧版本,例如 1.21 和 1.22,请考虑升级到支持的新版本之一。
1.21 集群的生命周期终止支持是 2023 年 2 月 16 日,1.22 集群的生命周期结束支持将在 2023 年 5 月。如果您对亚马逊 EKS 版本支持还有其他疑问,请参阅我们的
常见问题解答
。