我们使用机器学习技术将英文博客翻译为简体中文。您可以点击导航栏中的“中文(简体)”切换到英文版本。
亚马逊 EKS 现在支持 Kubernetes 版本 1.27
简介
Kubernetes 1.27 亮点
这篇文章重点介绍了 Kubernetes 版本 1.27 中最重要的移除、弃用和功能,这些内容可能会影响您的集群和工作负载。首先,请务必注意,v1.27 中已弃用了多个功能和版本,包括 k8s.gcr.io 映像注册表冻结。这意味着您可能需要更新工作流程和配置以避免任何潜在问题。最后,还有一个我们都很兴奋的 kubelet 增强功能,它允许你轻松保护在给定节点上运行的容器工作负载。
在 v1.27 中,有一些有趣的功能正式上线 (GA)。以下是一些让我们的技术社区对 v1.27 版本感到兴奋的增强功能。有关完整列表,请参阅 Kubernetes v1.
seccompDefault 已进入
-
#2413 。SecCompDefault 已升级为稳定状态,默认情况下功能门处于启用状态。此功能门户可帮助您增强工作负载的安全状态,而无需大量的自定义 seccomp 配置文件。默认的 seccomp 配置文件旨在在安全性和应用程序兼容性之间取得平衡。毕业后,RuntimeDefault seccomp 配置文件将用作所有工作负载的默认配置文件。要为节点上运行的所有容器设置默认 seccomp 配置文件,请在引导脚本或启动模板中传递 —kubelet-extra-args “—seccomp-default” 标志。默认情况下,这会将 runtimeDefault seccomp 配置文件设置为所有工作负载的默认配置,该配置文件由容器运行时定义,而不是使用不受限制(禁用 seccomp)模式。通过使用此功能,您可以增加一层额外的保护,以防范恶意行为者利用的常见系统调用漏洞。 -
默认启用 seccomp 时,当前在没有 seccomp 的情况下运行的某些工作负载可能会出现中断。为了确保兼容性并防止潜在问题,我们强烈建议在默认启用 seccomp 之前,在暂存或测试环境中测试您的工作负载。如果出现任何兼容性问题,你可以选择禁用 seccomp 或为这些特定工作负载创建自定义配置文件。尽管默认配置文件可能不像某些自定义配置文件那样严格,但它在不影响应用程序互操作性的情况下提供了基本的安全级别。
此外,如果您需要对seccomp配置文件进行更精细的控制,并希望为工作负载创建和实现自定义配置文件,则可以探索安全配置文件操作员。 此运算符允许您在集群中定义和管理自定义 seccomp 配置文件。 -
要了解有关在集群中使用 kubelet 参数的更多信息,请参阅使用启动
模板自定义托管节点 。
更精细的 Pod 拓扑分布策略已进入测试阶段
-
在 v1.27 之前的 Kubernetes 早期版本中,实现分布在各个域(例如 kubernetes.io/hostname)上的均衡 pod 是一项艰巨的任务。为了应对这些障碍,Kubernetes v1.27 推出了一套高级的 pod 拓扑分布策略。KEP (
#3022 ,#3094 ,#3243 ) 中描述的这些功能在默认情况下处于启用状态时立即可用。它们共同提供了一个强大的工具集,可增强均匀分配工作负载的能力,增强弹性并简化滚动升级的执行。 -
#3022 引领潮流, 推出了 minDomains 参数,使您能够确定您的 pod 应占用的最小域数量,从而确保工作负载在集群中的均衡分布。第二行是,#3094 引入了 nodeaffinityPolicy 和 nodestentPolicy 参数,这两个参数允许根据节点亲和度和污点进一步细化管理 pod 的分布。这项特殊功能与 NodeInclusionPolicyInpodtopologySpread 门相关联,为了提高利用率,该门现在默认处于启用状态。最后,#3243 在你的容器规格的 topologySpreadConstraints 中 实现了 matchLabelKeys 字段,该字段允许在滚动升级后选择容器进行分散计算。 -
要了解更多信息,请参阅
Kubernetes 1.27:更精细的 pod 拓 扑分布策略已进入测试版。
提高了 kubelet 的默认 API 每秒查询次数限制
-
在 v1.27 之前的版本中,亚马逊 EKS kubelet 对 KubeapiQps 的默认值为每秒 10 个请求,KubeapiBurst 的突发请求限制为 20 个,这决定了 kubelet 处理传入请求的速率。
在 #1040 中 ,亚马逊 EKS 优化的 AMI 对 KubeaPiqps 采用 了新的默认值,即每秒 50 次请求,对 KubeapiBurst 采用了 100 次请求的突发上限。这些变化提高了突然出现额外资源需求时 Pod 在新节点上开始运行的速度。 -
通过增加 kubelet 的默认值,这些增强允许 kubelet 每秒处理更多的 API 查询,从而提高响应能力和性能。当由于扩展要求而突然出现对 Pod 的需求时,修改后的默认值可确保 kubelet 能够有效地管理增加的工作负载,从而更快 Pod 的启动速度和更流畅的集群操作。
亚马逊 EKS 优化的 AMI 中 kubelet 默认值的这些 调整与优化 Kubernetes 性能和改善客户体验的持续努力相吻合。
移除了 API 版本和功能
如今,当发布新版本的 Kubernetes 时,Kubernetes 应用程序编程接口 (API) 版本和功能被弃用或删除的情况并不少见。发生这种情况时,在
k8s.gcr.io 镜像注册表已冻结
从 Kubernetes v1.27 开始,Kubernetes 项目冻结了 k8s.gcr.io 注册表。
这意味着来自 v1.27 的新 Kubernetes 镜像和旧版本的补丁将不会发布到 k8s.gcr.io 注册表中。
相反,你必须开始使用 regist
ry.k8s.io 来获取最新的 K
ubernetes 镜像,它现在是 Kubernetes 镜像的唯一来源。如果您尚未将清单和配置更新到新的注册表,请观看我们的 亚马逊云科技 开发者倡导者之一贾斯汀·加里森的
移除 alpha seccomp 注释
kubectl get pods --all-namespaces -o json | grep -E 'seccomp.security.alpha.kubernetes.io/pod|container.seccomp.security.alpha.kubernetes.io'
删除
--container-runtime 命令
行参数
et 的--container-runtim
e 命令行参数已被删除。
--kubelet-extra-args
”,以防止在节点引导过程中出现错误。您
必须
从所有节点创建工作流程和
构建脚本中 删除--container- runtim
e 参数。
eksctl
你
必须
从 kubeletExtraConfig 字段中 移除
容器运行时
:
nodeGroups:
- name: your-nodegroup-name
instanceType: m5.large
desiredCapacity: 3
minSize: 1
maxSize: 4
kubeletExtraConfig:
container-runtime: "your-runtime"
Terraform
你
必须
从
bootstrap
_extra_args 字段中 删除
容器运行时
:
node_groups = {
eks_nodes = {
desired_capacity = 2
max_capacity = 10
min_capacity = 1
instance_type = "m5.large"
k8s_labels = {
Environment = "test"
Name = "eks-worker-node"
}
additional_userdata = "echo foo bar"
bootstrap_extra_args = "--container-runtime=your-runtime"
}
结论
在这篇文章中,我们介绍了 Kubernetes 版本 v1.27 中的显著变化,并重点介绍了一些最令人兴奋的可用功能。请务必查看
亚马逊 EKS 在任何给定时间都支持至少四个 Kubernetes 版本。鉴于 Kubernetes 发布周期的性质,所有客户都有持续的升级计划至关重要。
*前述特定亚马逊云科技生成式人工智能相关的服务仅在亚马逊云科技海外区域可用,亚马逊云科技中国仅为帮助您发展海外业务和/或了解行业前沿技术选择推荐该服务。