Kubernetes 1.26 正式发布,变化重大,所有更改都在这里了!

2023-05-16

Kubernetes 1.26 正式发布,变化重大,所有更改都在这里了!

Kubernetes 1.26 已经正式发布,满载新奇!

此版本带来了 37 项增强功能,与 Kubernetes 1.25 中的 40 项 和 Kubernetes 1.24 中的 46 项相当。在这 37 项增强功能中,11 项正在升级为稳定版,10 项是不断改进的现有功能,16 项是全新的,1 项是已弃用的功能。

此版本中有两个突出的新功能,它们有可能改变用户与 Kubernetes 交互的方式:能够使用来自其他命名空间的快照来配置卷。

还有一些针对高性能工作负载的新功能,例如科学研究或机器学习:更好地运行您的工作负载的物理 CPU 内核。

此外,其他功能将使集群管理员的工作更轻松,例如对 OpenAPIv3 的支持。

现在让我们开始了解 Kubernetes 1.26 中的新功能。

Kubernetes 1.26 推荐功能

这些是我们在此版本中最令人兴奋的功能 (ymmv):

从跨命名空间快照配置卷

VolumeSnapshot 功能允许 Kubernetes 用户从卷快照中配置卷,为用户和应用程序带来巨大好处,例如使数据库管理员能够在任何关键操作之前对数据库进行快照,或者能够开发和实施备份解决方案。

从 Kubernetes 1.26 开始,作为 Alpha 功能,用户将能够跨命名空间从VolumeSnapshot创建PersistentVolumeClaim,打破了将两个对象放在同一命名空间的初始限制。

此增强功能旨在消除阻止用户和应用程序执行基本任务的限制,例如当应用程序和服务位于不同命名空间时保存数据库检查点。

CEL 用于准入控制

来自 Kubernetes 1.25 的验证表达式语言的实际实现!

通过将准入控制器的规则定义为 Kubernetes 对象,我们可以开始忘记管理 webhook,从而简化集群的设置。不仅如此,现在实施 Kubernetes 安全性也更容易一些。

这些用户友好的改进是保持 Kubernetes 采用率增长的关键。

Kubernetes 组件运行状况 SLI

从 Kubernetes 1.26 开始,您可以为 Kubernetes 组件二进制文件配置服务级别指标 (SLI) 指标。启用它们后,Kubernetes 将在/metrics/slis端点中公开 SLI 指标。因此您将不需要 Prometheus exporter。这可以将 Kubernetes 监控提升到另一个级别,从而更容易创建健康仪表板和配置 PromQL 警报以确保集群的稳定性。

cAdvisor-less, CRI-full 容器和 Pod 统计

目前,要从容器收集指标,例如消耗的 CPU 或内存,Kubernetes 依赖于 cAdvisor。此功能提供了一种替代方案,丰富了 CRI API 以提供来自容器的所有指标,从而提供更大的灵活性和更高的准确性。毕竟,最了解容器行为的是容器运行时。

此功能代表着在从 Kubernetes 代码中删除 cAdvisor 的路线图上又迈出了一步。然而,在此过渡期间,cAdvisor 将被修改为不生成添加到 CRI API 的指标,避免具有可能不同和不连贯值的重复指标。

动态资源分配

这个 Kubernetes 版本引入了一个新的 Alpha 功能,它将为高级硬件提供扩展的资源管理。它带有一个用户友好的 API 来描述资源请求。随着处理不同硬件组件(如 GPU 或 FPGA)的需求不断增加,以及设置初始化和清理的需要,这一新功能将加速 Kubernetes 在科学研究或边缘计算等领域的采用。

改进了拓扑管理器中的多 numa 对齐

这是另一个针对高性能工作负载的功能,例如那些涉及科学计算的功能。我们看到自 Kubernetes 1.22 和 1.23 以来新的 CPU 管理器正在形成,使开发人员能够将他们的工作负载保持在靠近数据存储在内存中的位置,从而提高性能。Kubernetes 1.26 更进了一步,为进一步定制此功能打开了大门。毕竟,并非所有工作负载和 CPU 架构都是相同的。

事实上,Kubernetes 上的 HPC 的未来看起来很有希望。

允许 StatefulSet 控制开始副本序号

Kubernetes 中的 StatefulSets 通常是关键的后端服务,例如集群数据库或消息队列。

这种增强,看似微不足道的编号变化,允许更大的灵活性,并支持滚动跨命名空间甚至 StatefulSet 副本的跨集群迁移的新技术,而无需任何停机时间

虽然这个过程可能看起来有点笨重,涉及到对 PodDisruptionBudgets 的仔细定义和相对于迁移副本的资源移动,但我们可以肯定有想象和实施空间(或现有的 operators 增强)可以自动化这些操作以实现无缝迁移,与目前可行的冷迁移策略(关机-备份-恢复)形成鲜明对比。

获取自我用户属性的 Auth API

alpha 版的这项新功能将简化集群管理员的工作,尤其是当他们管理多个集群时。它还将协助复杂的身份验证流程,因为它允许用户在集群内查询他们的用户信息或权限。

此外,这还包括是否使用代理( Kubernetes API server 在应用了所有身份验证机制后填写 userInfo )或模拟(您将获得被模拟用户的详细信息和属性) ,因此您将以一种非常简单的方式获得用户信息。

聚合发现 Aggregated Discovery

这对于用户来说是一个很小的改变,但是在清洁 Kubernetes 内部结构和提高其性能方面又向前迈进了一步。通过聚合 API 调用(或者至少在发现部分)来减少 API 调用的数量是解决日益严重的问题的一个很好的办法。希望这将为集群管理员提供一个小小的突破。

弃用

Kubernetes 1.26 中删除了一些 beta API 和功能,包括:

不再提供的弃用 API 版本,您应该使用更新的版本:

  • CRI v1alpha2已经弃用,使用v1(不支持 containerd 1.5 及更早版本)。
  • flowcontrol.apiserver.k8s.io/v1beta1已经弃用,使用v1beta2
  • autoscaling/v2beta2已经弃用,使用v2

已弃用。在下一个版本发布之前请实施替代方案:

  • 树内 GlusterFS 驱动程序。
  • kubectl --prune-whitelist,用--prune-allowlist代替。
  • kube-apiserver --master-service-namespace.
  • 若干个未使用的选项 kubectl run--cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout, --wait
  • CLI flag pod-eviction-timeout
  • apiserver_request_slo_duration_seconds指标,使用apiserver_request_sli_duration_seconds代替.

已删除。在升级之前请实施替代方案:

  • Azure 和 Google Cloud 的旧版身份验证已弃用。
  • userspace proxy 模式。
  • 动态 kubelet 配置。
  • 若干个与日志相关的命令行参数。
  • in-tree OpenStack(cinder卷类型),使用CSI 驱动程序代替。

其他更改: 应该调整配置

  • Pod 安全准入:pod-security warn level 现在将默认为enforcelevel。
  • kubelet:启用 cpuCFSQuotaperiod 标志的默认 cpuCFSQuotaperiod 值现在是 100μs,而不是 100ms。
  • kubelet:--container-runtime-endpoint标志不能再为空。
  • kube-apiserver:gzip 压缩从级别 4 切换到级别 1。
  • 指标:preemption_victimsLinearBuckets更改为ExponentialBuckets
  • 指标:etcd_db_total_size_in_bytes重命名为apiserver_storage_db_total_size_in_bytes.
  • 指标:kubelet_kubelet_credential_provider_plugin_duration已更名为kubelet_credential_provider_plugin_duration.
  • 指标:kubelet_kubelet_credential_provider_plugin_errors已更名为kubelet_credential_provider_plugin_errors.
  • 从各种容器映像中删除了 Windows Server 版本 20H2 风格。
  • e2e.test 二进制文件不再发出 JSON 结构来记录进度。

您可以在Kubernetes 1.26 发行说明中查看完整的更改列表。此外,我们推荐Kubernetes Removals and Deprecations In 1.26文章,并保留已弃用的 API 迁移指南以备将来使用。

#281动态 Kubelet 配置

**功能组:**节点

自 Kubernetes 1.11 以来处于测试阶段后,Kubernetes 团队决定弃用DynamicKubeletConfig而不是继续开发。

此功能在 1.21 中被标记为弃用,然后在 1.24 中从 Kubelet 中删除。现在在 1.26 中,它已经完全从 Kubernetes中移除。

Kubernetes 1.26 API

#3352聚合发现

阶段: Net new to Alpha
特性组: api-machinery
特性门: AggregatedDiscoveryEndpoint
默认值: false

每个 Kubernetes 客户端(例如:kubectl)需要发现 kubernetes-apiserver,为此,他们需要针对每个 API 和版本发出请求,这会导致请求风暴。

此增强功能旨在将所有这些调用减少到两个。

客户端可以将as=APIGroupDiscoveryList包含到其请求的Accept字段中,以请求/api/apis端点。然后,服务器将返回一个包含所有可用 API 及其版本的聚合文档 (APIGroupDiscoveryList)。

#3488 CEL 用于准入控制

阶段: Net new to Alpha
功能组: api-machinery
特征门: ValidatingAdmissionPolicy
默认值: false

从 Kubernetes 1.25 引入的 CRD 验证表达式语言,此增强功能提供了一种新的准入控制器类型 ( ValidatingAdmissionPolicy ),允许在不依赖 webhook 的情况下实现一些验证。

这些新政策可以定义如下:

 apiVersion: admissionregistration.k8s.io/v1alpha1
 kind: ValidatingAdmissionPolicy
 metadata:
   name: "demo-policy.example.com"
 Spec:
   failurePolicy: Fail
   matchConstraints:
     resourceRules:
     - apiGroups:   ["apps"]
       apiVersions: ["v1"]
       operations:  ["CREATE", "UPDATE"]
       resources:   ["deployments"]
   validations:
     - expression: "object.spec.replicas <= 5"

此策略将拒绝具有5或更少副本的 deployments 请求。

在文档中发现此功能的全部功能。

#1965 kube-apiserver 身份

阶段: Graduating to Beta
特性组: api-machinery
特性门: APIServerIdentity
默认值: true

为了更好地控制哪些 kube-apiservers 在高可用性集群中处于活动状态,已经实施了新的租用/心跳系统。

Kubernetes 1.26 中的应用程序

#3017 PodDisruptionBudget 的 PodHealthyPolicy

阶段: Net new to Alpha
功能组: apps
功能门: PDBUnhealthyPodEvictionPolicy
默认值: false

PodDisruptionBudget 允许您与集群管理员沟通一些最低要求,以简化维护任务,例如“不要销毁其中一个以上”或“至少让其中两个保持活动状态”。

但是,这仅考虑 pod 是否正在运行,而不考虑它们是否健康。您的 pod 可能正在运行但未就绪,并且 PodDisruptionBudget 可能会阻止其被驱逐。

此增强功能使用 status.currentHealthy``status.desiredHealthyspec.unhealthyPodEvictionPolicy 字段扩展了这些预算定义,以帮助您定义如何管理不健康的 pod。

$ kubectl get poddisruptionbudgets example-pod
apiVersion: policy/v1
kind: PodDisruptionBudget
[...]
status:
  currentHealthy: 3
  desiredHealthy: 2
  disruptionsAllowed: 1
  expectedPods: 3
  observedGeneration: 1
  unhealthyPodEvictionPolicy: IfHealthyBudget

#3335允许 StatefulSet 控制开始副本序号

阶段: Net new to Alpha
功能组: apps
功能门: StatefulSetStartOrdinal
默认值: false

Kubernetes 中的 StatefulSets 目前使用序号为它们的 pod 编号,第一个副本是0,最后一个是spec.replicas

此增强功能向 StatefulSet 清单规范添加了一个具有单个字段的新结构 spec.ordinals.start,它允许定义由 StatefulSet 控制的副本的起始编号。

这很有用,例如,在 StatefulSet 的跨命名空间或跨集群迁移中,巧妙地使用 PodDistruptionBudgets(和多集群服务)可以允许副本的受控滚动迁移,避免任何停机时间。

#3329 Jobs 的可重试和不可重试 Pod 失败

阶段: Graduating to Beta
功能组: apps
功能门: JobPodFailurePolicy默认值: true
**功能门: **: PodDisruptionsCondition默认值: true

此增强功能允许我们在Jobs的规范上配置.spec.podFailurePolicy,确定在失败的情况下是否应重试 Job 的规范。这样,Kubernetes 可以提前终止作业,避免在基础设施故障或应用程序错误的情况下增加退避时间。

#2307 无需遗留 Pod 来跟踪 Job

阶段: Graduating to Stable
功能组: apps
功能门: JobTrackingWithFinalizers
默认值: true

通过此增强功能,Jobs 将能够更早地删除已完成的 pod,从而释放集群中的资源。

Kubernetes 1.26 授权

#3325 获取用户属性的 Auth API

阶段: Net new to Alpha
特性组: auth
特性门: APISelfSubjectAttributesReview
默认值: false

当在 Kubernetes 集群中使用复杂的身份验证流,并且在应用了所有身份验证机制之后希望了解所有 userInfo 时,这个新特性非常有用。

执行kubectl alpha auth whoami将产生以下输出:

apiVersion: authentication.k8s.io/v1alpha1
kind: SelfSubjectReview
status:
  userInfo:
    username: jane.doe
    uid: b79dbf30-0c6a-11ed-861d-0242ac120002
    groups:
    - students
    - teachers
    - system:authenticated
    extra:
      skills:
      - reading
      - learning
      subjects:
      - math
      - sports

总之,一旦在集群中进行了身份验证,我们现在可以执行典型的 /me 操作来了解自己的权限。

#2799 减少基于秘密的服务帐户令牌

阶段: Graduating to Beta
特性组: auth
特性门: LegacyServiceAccountTokenNoAutoGeneration
默认值: true

API 凭据现在通过TokenRequest API获得,自 Kubernetes 1.22 以来稳定,并使用projected卷安装到 Pod 中。当它们关联的 Pod 被删除时,它们将自动失效。

Kubernetes 1.26 中的网络

#3453最小化 iptables-restore 输入大小

阶段: Net new to Alpha
**特性组:**网络
特性门: MinimizeIPTablesRestore
默认值: false

此增强功能旨在提高kube-proxy. 它将通过仅发送调用时已更改的规则iptables-restore而不是整套规则来实现。

#1669 代理终止端点

阶段: Graduating to Beta
特性组: network
特性门: ProxyTerminatingEndpoints
默认值: true

此增强功能通过将所有外部流量发送到就绪和未就绪的终止端点(首选就绪端点)来防止滚动更新期间的流量丢弃。

#2595扩展的 DNS 配置

阶段: Graduating to Beta
特性组: network
特性门: ExpandedDNSConfig
默认值: true

通过此增强功能,Kubernetes 允许在搜索路径中使用最多 32 个 DNS,并增加搜索路径的字符数(最多 2048 个),以跟上最新的 DNS 解析器。

#1435 在 type=LoadBalancer 的服务中支持混合协议

阶段: Graduating to Stable
特性组: network
特性门: MixedProtocolLBService
默认值: true

此增强功能允许 LoadBalancer 服务在同一端口为不同协议(UDP、TCP)提供服务。例如,在同一端口上为 DNS 或 SIP 服务器提供 UDP 和 TCP 请求。

#2086服务内部流量策略

阶段: Graduating to Stable
特性组: network
特性门: ServiceInternalTrafficPolicy
默认值: true

您现在在Service对象上设置spec.trafficPolicy字段以优化集群流量:

  • 使用Cluster,路由将照常运行。
  • 当设置为Topology时,它将使用拓扑感知路由。
  • 使用PreferLocal,它将流量重定向到同一节点上的服务。
  • 使用Local,它只会将流量发送到同一节点上的服务。

#3070为动态和静态 IP 分配保留服务 IP 范围

阶段: Graduating to Stable
特性组: network
特性门: ServiceIPStaticSubrange
默认值: true

--service-cluster-ip-range标志更新将降低使用静态和动态 IP 分配的服务之间发生 IP 冲突的风险,同时保持向后兼容性。

Kubernetes 1.26 节点

#2371 cAdvisor-less, CRI-full 和 Pod 统计

阶段: Alpha
**功能组的重大变化:**节点
功能门: PodAndContainerStatsFromCRI
Default value: false

此增强功能总结了从容器运行时接口 (CRI)检索有关正在运行的容器和 pod 的所有统计信息的工作,从 cAdvisor 中删除了依赖项。

从 1.26 开始,指标/metrics/cadvisor由 CRI 而不是 cAdvisor 收集。

#3063动态资源分配

阶段: Net new to Alpha
特性组: node
特性门: DynamicResourceAllocation
默认值: false

传统上,Kubernetes 调度程序只能考虑 CPU 和内存限制和请求。后来,调度程序得到扩展,也考虑了存储和其他资源。然而,这在许多情况下是有限制的。

例如,如果设备需要初始化和清理,就像 FPGA 一样;或者,如果您想限制对资源(如共享 GPU)的访问怎么办?

这个新的 API 涵盖了那些资源分配和动态检测的场景,使用了新的ResourceClaimTemplateResourceClass 对象,以及 Pods 内部的resourceClaims 新变量。

apiVersion: v1
 kind: Pod
# [...]
 spec:
   resourceClaims:
   - name: resource0
     source:
       resourceClaimTemplateName: resource-claim-template
   - name: resource1
     source:
       resourceClaimTemplateName: resource-claim-template
# [...]

调度器可以跟踪这些资源声明,并且只在那些具有足够可用资源的节点中调度 Pod。

#3386 Kubelet evented PLEG 以获得更好的性能

阶段: Net new to Alpha
特性组: node
特性门: EventedPLEG
默认值: false

此增强功能的目的是减少kubelet跟踪所有 pod 状态时的 CPU 使用率。

它将部分减少kubelet执行的定期轮询,而不是尽可能依赖来自容器运行时接口 (CRI) 的通知。

如果你对实现细节感兴趣,你可能想看看 KEP。

#3545改进了拓扑管理器中的多 NUMA 对齐

阶段: Net new to Alpha
**功能组:**节点
功能门: TopologyManagerPolicyOptions 默认值: false
功能门: TopologyManagerPolicyBetaOptions默认值:false
功能门: TopologyManagerPolicyAlphaOptions默认值: false

这是TopologyManager的一项改进,可以更好地处理非统一内存访问 ( NUMA ) 节点。对于某些高性能工作负载,控制它们在哪些物理 CPU 内核中运行非常重要。如果避免同一芯片的高速缓存之间或套接字之间的内存跳转,则可以显着提高性能。

kubelet的一个新标志topology-manager-policy-options将允许您传递选项并修改拓扑管理器的行为。

目前,只有一个 alpha 选项可用:

  • 传递时prefer-closest-numa-nodes=true,拓扑管理器将在单个 NUMA 节点或尽可能少的 NUMA 节点上对齐资源。

由于将来可能会添加新选项,因此添加了几个功能门控,因此您可以选择只关注稳定的功能门:

  • TopologyManagerPolicyOptions: 将启用topology-manager-policy-options标志和稳定选项。
  • TopologyManagerPolicyBetaOptions: 还将启用 beta 选项。
  • TopologyManagerPolicyAlphaOptions: 还将启用 alpha 选项。

#2133 Kubelet 凭证提供程序

阶段: Graduating to Stable
特性组: node
特性门: KubeletCredentialProviders
默认值: true

此增强功能用外部和可插入的新机制取代了树内容器镜像注册表凭证提供程序。

#3570CPUManager 毕业到 GA

阶段: Graduating to Stable
特性组: node
特性门: CPUManager
默认值: true

CPUManager 是负责将 pod 容器分配给本地节点上的 CPU 集的 Kubelet 组件。

它在 Kubernetes 1.8 中引入,并在 1.10 版本中升级为 beta 版。对于 1.26,核心 CPUManager 被认为是稳定的,同时实验继续对其策略进行额外的工作。

#3573DeviceManager 毕业到 GA

阶段: Graduating to Stable
特性组: node
特性门: DevicePlugins
默认值: true

Kubelet 中的 DeviceManager 是管理与不同设备插件交互的组件。

Device Plugin 框架最初在 Kubernetes 1.8 中引入,并在 1.10 版中进入 beta 阶段,得到广泛采用,最终在 1.26 中进入 GA。

该框架允许在不修改核心 Kubernetes 组件的情况下使用外部设备。例如, NVIDIA GPU、AMD GPUS、SR-IOV NIC

Kubernetes 1.26 中的调度

#3521 Pod 调度就绪

阶段: Net new to Alpha
功能组: scheduling
特性门: PodSchedulingReadiness
默认值: false

此增强旨在通过让 Pod 定义它们何时准备好实际调度来优化调度。

并非所有待处理的 Pod都已准备好进行调度。有些会在某种miss-essential-resources状态下停留一段时间,这会导致调度程序进行额外的工作。

Pod 的新字段.spec.schedulingGates允许识别它们何时准备好进行调度:

apiVersion: v1
 kind: Pod
[...]
 spec:
   schedulingGates:
   - name: foo
   - name: bar
[...]

当存在任何调度门时,Pod 将不会被调度。

您可以使用以下方式检查状态:

$ kubectl get pod test-pod
 NAME       READY   STATUS            RESTARTS   AGE
 test-pod   0/1     SchedulingGated   0          7s

#3094 在计算计算 PodTopologySpread 偏斜时考虑污点/容忍度

阶段: Graduating to Beta
Feature group: scheduling
Feature gate: NodeInclusionPolicyInPodTopologySpread
默认值: true

topologySpreadConstraints字段以及maxSkew允许您跨节点分散工作负载。一个新的NodeInclusionPolicies字段允许在计算此 pod 拓扑分布偏差时考虑NodeAffinityNodeTaint

Kubernetes 1.26 存储

#3294从跨命名空间快照配置卷

阶段: Net new to Alpha
特性组: storage
特性门: CrossNamespaceVolumeDataSource
默认值: false

在 Kubernetes 1.26 之前,由于 VolumeSnapshot 的特性,用户可以从快照中提供卷。虽然这是一个伟大的和超级有用的功能。它有一些局限性,比如无法将 PersisentVolumeClaim 绑定到来自其他名称空间的 VolumeSnapshot。

这种增强打破了这个限制,允许 Kubernetes 用户从跨名称空间的快照提供卷。

如果要使用跨名称空间的 VolumeSnapshot 特性,首先必须创建 ReferenceGrant 对象,然后创建一个到 VolumeSnapshot 的 PersisentVolumeClaim 绑定。在这里,您将找到一个简单的例子来说明这两个对象的学习目的。

---
apiVersion: gateway.networking.k8s.io/v1alpha2
kind: ReferenceGrant
metadata:
  name: test
  namespace: default
spec:
  from:
  - group: ""
    kind: PersistentVolumeClaim
    namespace: nstest1
  to:
  - group: snapshot.storage.k8s.io
    kind: VolumeSnapshot
    name: testsnapshot
---
apiVersion: v1
kind: PersistentVolumeClaim
metadata:
  name: testvolumeclaim
  namespace: nstest1
spec:
  storageClassName: mystorageclass
  accessModes:
  - ReadWriteOnce
  resources:
    requests:
      storage: 2Gi
  dataSourceRef2:
    apiGroup: snapshot.storage.k8s.io
    kind: VolumeSnapshot
    name: testsnapshot
    namespace: default
  volumeMode: Filesystem

#2268非正常节点关闭

阶段: Graduating to Beta
特性组: storage
特性门: NodeOutOfServiceVolumeDetach
默认值: true

此增强解决了未正确检测到的节点关闭情况,其中属于StatefulSet的 pod 将停留在关闭节点上的终止状态,并且无法移动到新的运行节点。

在这种情况下,pod 将被强制删除,触发VolumeAttachments的删除,新的 pods 将在不同的运行节点上创建,以便应用程序可以继续运行。

#3333追溯默认 StorageClass 分配

阶段: Graduating to Beta
特性组: storage
特性门: RetroactiveDefaultStorageClass
默认值: false

这种增强有助于管理集群管理员更改默认存储类时的情况。所有在更改发生时创建的没有 StorageClass 的 PVC 将追溯设置为新的默认 StorageClass。

#1491 vSphere 从树内迁移到 CSI 驱动程序

阶段: Graduating to Stable
特性组: storage
特性门: CSIMigrationvSphere
默认值: false

vSphere 的 CSI 驱动程序已经稳定了一段时间。现在,所有插件操作vspherevolume现在都重定向到树外的 csi.vsphere.vmware.com 驱动程序。

此增强功能是#625 In-tree 存储插件到 CSI 驱动程序迁移工作的一部分。

#1885 Azure 文件从树内到 CSI 驱动程序迁移

阶段: Graduating to Stable
特性组: storage
特性门: InTreePluginAzureDiskUnregister
默认值: true

此增强功能总结了将 Azure 文件代码移出主要 Kubernetes 二进制文件(树外)的工作。

#2317允许 Kubernetes 在挂载时将 pod 的 fsgroup 提供给 CSI 驱动程序

**阶段:**毕业到稳定
**功能组:**存储
功能门: DelegateFSGroupToCSIDriver
Default value: false

这个增强建议将 pods 的 fsgroup 作为一个显式字段提供给 CSI 驱动程序,因此 CSI 驱动程序可以在挂载时本地应用这个组。

Kubernetes 1.26 中的其他增强功能

#3466 Kubernetes 组件运行状况 SLI

阶段: Net new to Alpha
特性组: instrumentation
特性门: ComponentSLIs
默认值: false

查询 Kubernetes 组件的健康数据没有标准格式。

从 Kubernetes 1.26 开始,一个新的 endpoint:/metrics/slis将对每个组件可用,以 Prometheus 格式公开其服务水平指标 (SLI) 指标。

对于每个组件,将公开两个指标:

  • 一个gauge,代表健康检查的当前状态。
  • 一个计数器,记录每个健康检查状态观察到的累积计数。

使用此信息,您可以检查 Kubernetes 内部的超时状态,例如:

kubernetes_healthcheck{name="etcd",type="readyz"}

并在出现问题时创建警报,例如:

kubernetes_healthchecks_total{name="etcd",status="error",type="readyz"} > 0

#3498扩展指标稳定性

阶段: Net new to Alpha
特性组: instrumentation
特性门: N/A

Kubernetes 中的指标分为alphastable。这些stable保证会得到维护,为您提供信息来准备您的仪表板,这样它们就不会在您升级集群时意外中断。

在 Kubernetes 1.26 中,新增了两个类:

  • beta:用于与测试版功能相关的指标。它们可能会改变或消失,但它们处于比 alpha 更高级的开发状态。
  • internal:您不必担心的内部使用指标,要么是因为它们没有为集群管理员提供有用的信息,要么是因为它们可能会更改而不另行通知。

您可以在文档中查看可用指标的完整列表。

#3515 用于 kubectl 的 OpenAPI v3 说明

阶段: Net new to Alpha
特性组: cli
环境变量: KUBECTL_EXPLAIN_OPENAPIV3
默认值: false

此增强功能允许kubectl explain从 OpenAPIv3 而不是 v2 收集数据。

在 OpenAPIv3 中,一些数据可以用更好的方式表示,例如CustomResourceDefinition (CDR)。

还正在进行内部工作以改进kubectl explain打印输出的方式。

#1440 kubectl 事件

**阶段:**升级到 Beta
功能组: cli
功能门: N/A

一个新kubectl events命令可用,它将增强kubectl get events.

#3031签署发布工件

**阶段:**升级到 Beta
**功能组:**发布
功能门: N/A

此增强功能引入了一种统一的方法来签署工件,以帮助避免供应链攻击。它依赖于sigstore项目工具,更具体地说cosign。虽然它没有添加新功能,但它肯定有助于使我们的集群受到更多保护。

#3503 Windows pod 的主机网络支持

阶段: Net new to Alpha
功能组: windows
功能门: WindowsHostNetwork
默认值: false

Windows pod 中有一种奇怪的情况,您可以在其中为它们设置hostNetwork=true,但它不会改变任何东西。没有任何平台障碍,只是缺少实现。

从 Kubernetes 1.26 开始,kubelet现在可以请求 Windows pod 使用主机的网络命名空间,而不是创建新的 pod 网络命名空间。

这将很方便地避免有大量服务的端口耗尽。

#1981支持 Windows 特权容器

**阶段:**毕业到稳定
功能组: windows
功能门: WindowsHostProcessContainers
默认值: true

此增强功能将 Linux 中可用的特权容器功能引入到了 Windows 主机。

特权容器可以访问主机,就好像它们直接在主机上运行一样。尽管不建议将它们用于大多数工作负载,但它们对于管理、安全和监控目的非常有用。

出处

作者:sysdig
原文:https://sysdig.com/blog/kubernetes-1-26-whats-new/

说明

请关注 危 ❤ 工中号【进击云原生】,更有 free 资源供您学习

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

Kubernetes 1.26 正式发布,变化重大,所有更改都在这里了! 的相关文章

  • 阶段性工作总结

    xff08 一 xff09 简介 1 常用VSLAM开源框架对比 xff0c 初步研究方向确定 2 ORB SLAM3的数据集测试 xff0c 各种模式下的运行性能对比 xff0c 及IMU模式下与Vins对比实验 3 adas视频在ORB
  • 第二阶段文献总结

    xff08 一 xff09 CoSLAM 1 系统功能和亮点 功能 xff1a 本文是第一个动态场景下多相机合作的同时定位 静态图构建 动态点轨迹估计的SLAM系统 亮点 xff1a 引入相机间位姿估计和相机间建图解决动态物体问题维护每一个
  • 第三阶段文献总结

    motion分割相关方法 xff08 一 xff09 Semantic segmentation aided visual odometry for urban autonomous driving 1 文章特点 xff1a VO中包含重投
  • 动态场景SLAM相关论文总结

    参考文献 xff1a VDO SLAM xff08 动物判别与跟踪 xff09 DynaSLAM xff08 深度学习 43 多视图几何分割 xff09 CoFusion xff08 语义 43 运动分割 xff09 Meaningful
  • 算法总结——八皇后问题(三种解法)

    问题描述 会下国际象棋的人都很清楚 xff1a 皇后可以在横 竖 斜线上不限步数地吃掉其他棋子 如何将8个皇后放在棋盘上 xff08 有8 8个方格 xff09 xff0c 使它们谁也不能被吃掉 xff01 这就是著名的八皇后问题 对于某个
  • 游戏开发图书推荐--我读过的技术经典图书

    很多同学问我学游戏开发应该看些什么书 xff0c 我在这里抛砖引玉 xff0c 给一份推荐表 xff0c 希望大家共同提高 由于本人英文不太好 xff0c 推荐的大部书籍都是国人编写的 xff0c 有些经典的外文图书可能是翻译不好 xff0
  • (四)加入摄像头的系统

    打开摄像头的方法在第一章里就讲到了 xff0c 而且使用了多线程完成 所以这一章的内容就是将之前第一章的代码做移植 xff0c 进行小幅度的修改 xff0c 应用到当前系统上就可以了 在UI界面上已经放好了用来显示摄像头信息的label 在
  • 安卓不透明度和透明度

    安卓不透明度和透明度 xff1a 不透明度透明度16进制100 0 FF99 1 FC98 2 FA97 3 F796 4 F595 5 F294 6 F093 7 ED92 8 EB91 9 E890 10 E689 11 E388 12
  • Centos7安装PHP

    阿里云官方镜像站 xff1a 阿里巴巴开源镜像站 OPSX镜像站 阿里云开发者社区 我们在系统安装软件时都会遇到各种小问题 xff0c 那么如何才能提高我们在云服务器上的软件安装效率呢 xff1f 接下来就为大家详细介绍下如何在 CentO
  • Canny边缘检测

    Canny边缘检测 1 使用高斯滤波器 xff0c 以平滑图像 xff0c 滤除噪声 2 计算图像中每个像素点的梯度强度和方向 3 应用非极大值 xff08 Non Maximum Suppression xff09 抑制 xff0c 以消
  • MBus协议详解(一)

    看了许多关于MBus协议的资料 xff0c 感觉说的不具体 不完整 也不系统 xff0c 本人准备结合一个具体的产品实现 xff0c 从理论和实现上对MBus协议做一个详细的论述 xff0c 如有不当之处 xff0c 欢迎讨论 1 介绍 M
  • 机器学习期末复习题题库-单项选择题

    1 属于监督学习 的机器学习算法是 xff1a 贝叶斯分类器 2 属于无监督学习 的机器学习算法是 xff1a 层次聚类 3 二项式 分布的共轭分布是 xff1a Beta分布 4 多项式 分布的共轭分布是 xff1a Dirichlet分
  • Linux中查看磁盘大小、文件大小、排序方法小结

    一 xff0c 查看磁盘空间大小的命令 xff1a df df命令用于查看磁盘分区上的磁盘空间 xff0c 包括使用了多少 xff0c 还剩多少 xff0c 默认单位是KB 比如以下命令 xff1a df hl 执行结果如下 xff1a 执
  • 【Mac M1】安装stable diffusion webui教程及问题集锦

    这里写自定义目录标题 我的配置MacBookPro 14 M1安装视频教程可参考如下链接 xff1a 主播讲的挺清楚安装步骤 xff1a 第一步 xff1a 安装homebrew第二步 xff1a 安装pytorch第三步 xff1a 安装
  • cmake找不到trigger_msgsConfig.cmake 解决办法

    在编译FLIR相机驱动时遇到 百度无人记录此问题 xff0c 特此记录解决办法 sudo apt install ros melodic image transport
  • PX4源码开发人员文档(一)——软件架构

    软件架构 PX4 在广播消息网络内 xff0c 按照一组节点 xff08 nodes xff09 的形式进行组织 xff0c 网络之间使用像如 姿态 和 位置 之类的语义通道来传递系统状态 软件的堆栈结构主要分为四层 应用程序接口 提供给
  • PX4(PIXHAWK)源码开发人员文档(二)——Hello Sky

    前提 用UART1连接PX4FMU和计算机 安装PX4Toolchain 注册Github账户 Step 1 准备源码文件 为了方便管理代码 xff0c 可以使用GIT 版本控制系统 xff0c 在 GitHub上 fork和更新源码 不注
  • PX4(PIXHAWK)源码开发人员文档(二)——Hello Sky(续)

    Step 5 订阅传感器数据 为了做有用的事情 xff0c 应用需要订阅subscribe输入并发布publish输出 e g 电机 或伺服指令 PX4平台真正的硬件抽象 xff08 true hardware abstraction xf
  • PX4(PIXHAWK)源码开发人员文档(三)——进程间通讯的开发者指南

    进程 应用之间的通信 xff08 例如将传感器应用的传感器数据发送到姿态滤波应用 xff09 是 PX4 软件架构的关键部分 进程 xff08 通常又被叫做节点 xff08 node xff09 xff09 通过命名为总线 xff08 bu
  • Ubuntu21.10配置Docker CE 镜像

    Docker CE 是免费的 Docker 产品的新名称 xff0c Docker CE 包含了完整的 Docker 平台 xff0c 非常适合开发人员和运维团队构建容器 APP 参考阿里云官方镜像站 xff1a 阿里巴巴开源镜像站 OPS

随机推荐

  • PX4源码开发人员文档(四)——创建后台程序(应用)

    在 Unix 和其他多任务计算机操作系统中 xff0c 后台程序是指 xff0c 作为后台进程运行的计算机 xff0c 而不是由交互用户直接控制 后台程序概念的主要好处是 xff0c 后台程序可以直接启动 xff0c 而不需要将其发送到精确
  • PHP获取今天、本周、今年开始时间戳

    PHP获取今天 本周 今年开始时间戳 注 xff1a 以下代码在php8 0上测试通过 xff0c 其它版本的php理论上也是可行的 span class token delimiter important lt php span span
  • 搬砖过程中常用的英文单词(代码命名规则)

    注册register用户名 用户userName user密码password pwd路径path成绩score服务器host图片img字符串str数字num
  • CAN 邮箱的理解

    对于CAN邮箱的理解 xff1a CAN总线有接收邮箱和发送邮箱 xff1a 发送邮箱 是用于CAN总线数据发送的 xff0c 总共有3个 xff0c 并且存在优先级关系 优先级越高表示其里面的数据会被优先发送 数据在发送前都会被送到优先级
  • 变量名前为什么要加_下划线

    简单来说 xff0c 含有两个下划线和下划线 43 大写字母开头的标识符是给编译器和标准库用的 xff0c 你不能用 xff0c 否则后果自负 一个下划线开头的随便用 xff0c 只要你不嫌麻烦 而我们一般在前面加 表示私有变量 一般来说
  • 23 张图细讲使用 Devtron 简化 K8S 中应用开发

    23 张图细讲使用 Devtron 简化 K8S 中应用开发 在本文中 xff0c 您将学习如何在多集群环境中使用 Devtron 在 K8S 上进行应用开发 https devtron ai Devtron 附带用于构建 部署和管理微服务
  • 企业级网关 Kong 部署 Spring Boot 项目实战

    企业级网关 Kong 部署 Spring Boot 项目实战 1 概述 在本教程中 xff0c 我们将演示使用 Kong Ingress Controller KIC 在 Kubernetes 上部署 Spring Boot 应用程序 通过
  • Linux Mint(Ubuntu)上 安装 效率神器 utools

    我的 Windows 系统的笔记本只有 256G 固态 xff0c 磁盘已经快用满了 xff0c 最近想装个 Linux 玩玩 xff0c 选择了 Linux Mint xff0c 然后就在闲置的移动硬盘上安装了 Linux Mint 21
  • 图文轻松说透 K8S Pod 各种驱逐场景

    图文轻松说透 K8S Pod 各种驱逐场景 Kubernetes Pod 被驱逐是什么意思 xff1f 它们被终止 xff0c 通常是没有足够资源的结果 但是为什么会这样呢 xff1f 驱逐是指派给节点的Pod 被终止的过程 Kuberne
  • CKA、CKAD、CKS、LFCS、LFCA、LFCE 60$ 刀优惠券

    CKA CKAD CKS LFCS LFCA LFCE 60 刀优惠券 CKA 地址 xff1a https trainingportal linuxfoundation org courses certified kubernetes a
  • 配置Docker CE 镜像

    Docker CE 是免费的 Docker 产品的新名称 xff0c Docker CE 包含了完整的 Docker 平台 xff0c 非常适合开发人员和运维团队构建容器 APP 参考阿里云官方镜像站 xff1a 阿里巴巴开源镜像站 OPS
  • ssh 连接错误 Too many authentication failures 解决方法

    ssh 连接错误 Too many authentication failures 解决方法 背景 有时候使用 ssh 登录 或者 git ssh 方式连接 时会遇到 xff1a Too many authentication failur
  • 报错解决 REMOTE HOST IDENTIFICATION HAS CHANGED

    REMOTE HOST IDENTIFICATION HAS CHANGED 报错 span class hljs meta style color 61aeee line height 26px span span class bash
  • 使用 Helm Cli 将 chart 推送到 Harbor

    使用 Helm Cli 将 chart 推送到 Harbor 背景问题 努力寻找适用于特定版本的 Harbor 和 Helm 的文档 我尝试添加我的仓库 xff08 repo xff09 helm repo span class token
  • 修改 Git 已经提交记录的 用户名 和邮箱

    修改 Git 已经提交记录的 用户名 和邮箱 有关 Git 和版本控制的常见问题 如何更改提交的作者姓名 电子邮件 xff1f 在我们进入解决方案之前 xff0c 让我们找出您到底想要完成什么 xff1a 在提交之前更改作者信息在提交后更改
  • Go 中模拟 Kubernetes 客户端进行单元测试

    是的 xff0c 我们可以模仿 K8s Client xff01 编写单元测试一直是开发人员的痛苦 这样做的主要原因是 xff0c 通常 xff0c 单元测试 xff08 功能单元测试 xff09 不得使用应用程序的任何物理组件 运行实例
  • Kubernetes 1.26 中的删除、弃用和主要更改

    Kubernetes 1 26 中的删除 弃用和主要更改 变化是 Kubernetes 生命周期不可或缺的一部分 xff1a 随着 Kubernetes 的成长和成熟 xff0c 功能可能会被弃用 删除或替换为项目健康的改进 对于 Kube
  • 提高 K8S 容器运行时的可观察性最佳方法之一

    当谈到云原生可观察性时 xff0c 可能每个人都会提到OpenTelemetry OTEL xff0c 因为社区需要依赖标准来将所有集群组件开发指向到同一方向 OpenTelemetry 使我们能够将日志 指标 xff08 metrics
  • 6 张配图通俗易懂说透 K8S 请求和限制

    6 张配图通俗易懂说透 K8S 请求和限制 在 Kubernetes 中使用容器时 xff0c 了解涉及的资源是什么以及为何需要它们很重要 有些进程比其他进程需要更多的 CPU 或内存 这很关键 xff0c 永远不应该让进程挨饿 知道了这一
  • Kubernetes 1.26 正式发布,变化重大,所有更改都在这里了!

    Kubernetes 1 26 正式发布 xff0c 变化重大 xff0c 所有更改都在这里了 xff01 Kubernetes 1 26 已经正式发布 xff0c 满载新奇 xff01 此版本带来了 37 项增强功能 xff0c 与 Ku