Kubernetes生态 之 Kubernetes 1.27 版本重要特性

Kubernetes 1.27 版本重要特性

Posted by Kubeservice博客 on Friday, April 7, 2023

Kubernetes 1.27 版本 release

Kubernetes v1.26 是 2022 年只有 37 项特性。Kubernetes v1.27 2023年第一个大版本更新,包含了近 60 项主要的更新。这个版本可以说是一个变化非常显著的版本了。

Pod 调度就绪机制达到 Beta

这个功能实际上是从 Kubernetes v1.26 开始增加的。是 KEP 3521 的第一部分。

https://www.kubeservice.cn/2023/01/24/ecology-k8s-1-26/

使用时,通过配置 Pod 的 .spec.schedulingGates 即可。

新增 NodeLogQuery 特性

最习惯使用 kubectl logs 命令来获取 Kubernetes 集群中运行的应用的日志,也可以通过给它传递一些参数来调整它的过滤范围。

比如:kubectl logs job/hello 来指定获取 hello 这个 job 的日志;也可以增加 -l / --selector='' 来基于 label 进行过滤。

但是这并没有扩展到 Node 级别的日志,无法直接获取到某个 Node 上的全部日志,要想得到这个结果需要写一段很复杂的 Shell 来完成。

现在可以远程获取底层 Node 日志。与容器日志记录一样,这是Kubelet API的一部分。

$ kubectl get --raw "/api/v2/nodes/$NODE_NAME/proxy/logs/?query=kubelet

目前还没有专门针对此功能的 kubectl 命令,但可以使用以上命令进行尝试

Pod In-place 原地伸缩能力

这个功能允许在不重启 Pod 的情况下,更新 Pod 的 resources 配置

In-place Pod Vertical Scaling feature by vinaykul · Pull Request #102884 · kubernetes/kubernetes 经过 4 年的规划和至少 2 年的开发,在 Kubernetes v1.27 中终于推出了 Pod 的就地资源缩放的第一版。这个PR实现了核心缩放功能和一些相关的API处理。主要功能非常简单,现在可以在现有容器上编辑 resources 配置,而不会导致 API 错误

在看到缩放请求后,Kubelet 会立即采取行动并检查节点是否有足够的资源来满足新的请求。如果是这样,它将 Status.Resize 字段设置为 InProgress,并继续进行 CRI 调用其他内部更新

如果新的大小不合适,将启动其他状态流,但总体目标相同,即尝试在可能的情况下提供请求的更改。还有一个新的 per-resource 缩放策略字段,可以设置为 RestartNotRequired(默认值)表示不需要重新启动(但某些运行时仍然可能需要这样做), 或设置为 Restart 以强制关闭和重新启动容器(例如具有需要重新计算-Xmx 堆大小标志的 Java 应用)。

现在缺少一个显著的特性是基于缩放的驱逐。目前,Kubelet 不会自动处理它,但如果外部系统执行 Pod 删除,它将适当地作出反应。

尽管现在还处于比较早期的阶段,但至少我们看到了它的变化,期待后续的演进。

废弃特性

不再提供的API版本:

  1. Kubeadm v1beta2,可以使用 kubeadm config migrate 迁移到 v1beta3。
  2. resource.k8s.io/v1alpha1.PodScheduling :请使用 resource.k8s.io/v1alpha2.PodSchedulingContext。
  3. DynamicResourceManagement v1alpha1:请使用 v1alpha2。
  4. CSIStorageCapacity:storage.k8s.io/v1beta1:请使用 v1。

已弃用,在下一个版本发布之前实现替代方案:

  1. seccomp.security.alpha.kubernetes.io/pod 和 container.seccomp.security.alpha.kubernetes.io annotations :请改用 securityContext.seccompProfile 字段。
  2. SecurityContextDeny 准入插件。
  3. service.kubernetes.io/topology-aware-hints annotations:请改用 service.kubernetes.io/topology-mode。

已删除

  • Feature gates:
  • IPv6DualStack
  • ExpandCSIVolumes
  • ExpandInUsePersistentVolumes
  • ExpandPersistentVolumes
  • ControllerManagerLeaderMigration
  • CSI Migration
  • CSIInlineVolume
  • EphemeralContainers
  • LocalStorageCapacityIsolation
  • NetworkPolicyEndPort
  • StatefulSetMinReadySeconds
  • IdentifyPodOS
  • DaemonSetUpdateSurge
  • appProtocol: kubernetes.io/grpc.
  • kube-apiserver 参数: –master-service-namespace.
  • CLI 参数: –enable-taint-manager 和 –pod-eviction-timeout.
  • kubelet 参数: –container-runtime, –master-service-namespace.
  • Azure disk in-tree storage plugin.
  • AWS kubelet credential provider: 使用 ecr-credential-provider.

Metrics:

  • node_collector_evictions_number 被 node_collector_evictions_total 替换
  • scheduler_e2e_scheduling_duration_seconds 被 scheduler_scheduling_attempt_duration_seconds 替换

「如果这篇文章对你有用,请随意打赏」

Kubeservice博客

如果这篇文章对你有用,请随意打赏

使用微信扫描二维码完成支付