Kubernetes(k8s) v1.26.0-beta.0版本上线发布说明

半兽人 发表于: 2022-11-30   最后更新时间: 2022-12-01 00:39:32  
{{totalSubscript}} 订阅, 972 游览

2022年10月14号,v1.26.0-beta.0 使用 Golang 版本 1.19.3 构建并推送。

变化

以下是自Kubernetes(k8s) v1.26.0-alpha.3以来的变更日志。

弃用

  • CLI 标志 pod-eviction-timeout 已弃用,将在 v1.27 中与 enable-taint-manager 一起移除。

API变化

  • 在调度组件配置v1beta2/v1beta3/v1中增加了一个新的enqueue扩展点。

  • 在PersistentVolumeClaimSpec API中增加DataSourceRef2 alpha字段。

  • 增加一个kube-proxy标志(--iptables-localhost-nodeports,默认为true),允许禁用环回地址上的NodePort服务。注意:这只适用于iptables模式和ipv4。

  • 为kubelet增加了一个---topology-manager-policy-options标志,以支持拓扑管理器政策的微调。第一个策略选项,prefer-closest-numa-nodes,允许这些策略在做出接纳决定时偏爱节点之间距离较短的NUMA节点集。

  • 增加了一个功能,允许StatefulSet使用.spec.ordinals.start字段,从任意的非负序数开始对副本进行编号。

  • 在v1.27版中废除了apiserver_request_slo_duration_seconds指标,改用apiserver_request_sli_duration_seconds,以实现与其他SLI特定指标命名的一致性,避免SLO和SLI之间的混淆。

  • 启用 "jobs的可重试和不可重试的Pod故障"功能,进入测试阶段。

  • JobTrackingWithFinalizers变为稳定。在该功能启用前创建的Job仍被跟踪,但没有终结者。用户可以通过添加注解 batch.kubernetes.io/job-tracking,选择将job迁移到带终结者的跟踪。如果注解已经存在,而用户试图将其删除,控制平面会将注解添加回来。

  • 将ServiceInternalTrafficPolicy功能毕业到GA

  • 如果你用API服务--encryption-provider-config-automatic-reload启用了加密配置的自动重载,请确保加密配置中的所有KMS提供商名称(v1和v2)是唯一的。

  • 引入用于验证准入策略的v1alpha1 API,通过CEL表达式实现可扩展的准入控制(KEP 3488: CEL for Admission Control)。要使用,请通过 --runtime-config 启用 ValidatingAdmissionPolicy 功能网关 和 admissionregistration.k8s.io/v1alpha1 API。

  • Kubelet添加了以下pod故障条件:

    • DisruptionTarget(优雅的节点关闭,节点压力驱逐)
  • 在API对象中指定的 Metav1.LabelSelectors 现在被验证,以确保它们不包含无效的标签值,这将在使用时出错。现有的无效对象可以被更新,但新对象需要包含有效的标签选择器。

  • 将 MixedProtocolLBService 从测试版移至GA

  • 引入了新的 Pod API 字段.spec.scheudlingGates,使用户能够控制何时将一个Pod标记为调度准备。

  • podTopologySpread 插件中的 NodeInclusionPolicy 被默认启用。

  • 优先级和公平性引入了一个名为借用的新功能,允许API优先级从其他优先级借用一定数量的席位。作为集群管理员,你可以通过位于指定优先级的.spec.limited字段下的两个新引入的字段 lendablePercent 和 borrowingLimitPercent 来为某个优先级配置对象启用借用功能。这个PR增加了以下指标。

    • apiserver_flowcontrol_nominal_limit_seats: 为每个优先级别配置的执行席位的名义数量
    • apiserver_flowcontrol_lower_limit_seats: 配置每个优先级可用的执行席位数量的下限
    • apiserver_flowcontrol_upper_limit_seats: 配置每个优先级可用的执行席位数的上限
    • apiserver_flowcontrol_demand_seats: 在每个纳秒结束时,观察(每个优先级别可使用的座位数)/(该级别的名义座位数)。
    • apiserver_flowcontrol_demand_seats_high_watermark: 在上一个调整期,需求席位数的高水位线
    • apiserver_flowcontrol_demand_seats_average: 上一个调整期的时间加权平均数,即demand_seats
    • apiserver_flowcontrol_demand_seats_stdev: 在上一个调整期,demand_seats的时间加权标准差
    • apiserver_flowcontrol_demand_seats_smoothed: 平滑的席位需求
    • apiserver_flowcontrol_target_seats: 席位分配目标
    • apiserver_flowcontrol_seat_fair_frac: 将服务器并发量的合理部分分配给可以使用它的每个优先级别
    • apiserver_flowcontrol_current_limit_seats: 当前得出的每个优先级可用的执行席位的数量

    借用的可能性意味着旧的指标 apiserver_flowcontrol_request_concurrency_limit 不能再同时意味着配置的并发限制和强制的并发限制。此后,它意味着配置的并发限制。

  • EndpointSliceTerminatingCondition功能已升级为GA。该网关已被锁定,并将在v1.28版本中被移除。

  • 是的,聚合发现现在是alpha的,可以用AggregatedDiscoveryEndpoint进行切换。

功能

  • API服务器追踪现在包括授权、优先级和公平性、冒名顶替、审计和认证过滤器的延时。
  • 在 remotecommand.Executor 中增加一个 StreamWithContext 方法,以支持可取消的 SPDY 执行器流。
  • 增加对从CRI返回容器和pod指标的alpha支持,而不是cAdvsior
  • 增加对Evented PLEG功能网关的支持
  • 在kubelet中添加pod_start_sli_duration_seconds指标
  • 增加了kubelet重启后对SELinux挂载上下文的重建。功能SELinuxMountReadWriteOncePod现在已经完全实现,kubelet在kubelet进程重启后不会丢失其SELinux上下文的缓存。
  • 为HorizontalPodAutoscaler添加了选择器验证:当多个HPA选择同一组Pod时,现在将禁用那些具有AmbiguousSelector原因的HPA的缩放功能。这一变化也涵盖了当多个HPA指向同一部署时的情况。
  • 新增:启用/禁用topologyAwareHints时发布事件。
  • 为WindowsHostNetworking功能添加alpha支持
  • 增加了alpha --输出明文受环境变量KUBECTL_EXPLAIN_OPENAPIV3的保护
  • 在Pod GC控制器中增加了 force_delete_pods_total 和 force_delete_pod_errors_total指标。
  • CSIMigrationvSphere升级到GA并锁定为true。如果您需要Windows支持,请不要升级到K8s 1.26,直到vSphere CSI Driver在v2.7.x之后的版本中增加对它的支持。
  • DelegateFSGroupToCSIDriver功能是GA。
  • 将Kubelet CPU管理器升级为GA。
  • 将Kubelet设备管理器升级为GA。
  • 如果启用了ComponentSLIs功能网关,那么/metrics/slis在cloud-controller-manager上变得可用,允许你抓取健康检查指标。
  • Kubectl配置视图现在可以自动编辑任何标有datapolicy标签的secret字段。
  • Kubectl shell对bash shell的补全现在包括描述。
  • Kubernetes现在是用Go 1.19.3构建的。
  • 使Azure文件CSI迁移为1.26中的GA
  • NodeOutOfServiceVolumeDetach现在是测试版(beta)。
  • Pod安全准入:pod-security警告级别现在将默认为强制级别。
  • 将kubectl alpha事件提升为kubectl事件
  • 将APIServerIdentity功能晋升为Beta版。默认情况下,每个kube-apiserver现在都会在kube-system命名空间中创建一个Lease。这些租约对象可用于识别集群中活跃的API服务器的数量,也可用于 - 未来的功能,如存储版本API。
  • 将WindowsHostProcessContainers晋升为稳定的
  • RetroactiveDefaultStorageClass功能现在是测试版。
  • LegacyServiceAccountTokenNoAutoGeneration功能门已被提升为GA
  • ProxyTerminatingEndpoints功能现在是Beta版,并默认启用。启用后,当流量策略为 "本地 "且节点上只剩下终止的pod时,kube-proxy将尝试将流量路由到终止的pod。
  • iptables kube-proxy后端应该在非常大的集群中更有效地处理服务/终端的变化。
  • 更新APIServerIdentity功能的租赁身份命名格式,以使用一个持久的名称
  • 更新cAdvisor至v0.46.0

Bug 或 回归

  • Apiserver:在记录更新 managedFields 的错误时使用正确的错误。
  • 将runc提升到v1.1.4版本
  • 设置相同值的注解时不要引发错误,只需忽略它。
  • 修复优先级和公平性中服务账户的token创建请求的成本估算。
  • 修复当PodDisruptionConditions功能网关被启用时,中断控制器在2分钟后改变陈旧的中断条件的状态
  • 修复PodAndContainerStatsFromCRI功能,而不是用cAdvisor的统计信息来补充。
  • 修正了DaemonSet在创建Pod失败时也能更新状态。
  • 对于kubectl,--server-side现在将客户端应用所使用的所有字段的所有权迁移到指定的--fieldmanager。这可以防止之前用kubectl指定的字段脱离server-side-apply的管理而变得不可删除。
  • Kubectl apply:警告说,如果指定了命名空间并且没有指定allowlist,在未来的版本中,kubectl将忽略无命名空间的资源pv和命名空间。
  • Kubelet。修复了devicemanager中的启动崩溃问题
  • Kubelet:修复独立模式下反射器启动时的nil指针问题
  • 注意事项
  • 使用 --timestamps 的Pod日志不再用时间戳分解。
  • 解决了一个导致winkernel proxier将陈旧的VIP视为有效的问题
  • 从删除响应中返回的对象的resourceVersion现在与删除观察事件中包含的resourceVersion一致。

其他(清理或剥落)

  • 增加了一个新的API服务器标志--encryption-provider-config-automatic-reload,用于控制何时自动重新加载加密配置,而不需要重新启动服务器。启用重载后,或只使用KMS v2插件时,所有KMS插件都会被合并到 /healthz/kms-providers 的单一healthz检查里。
  • 增加了一个 --prune-allowlist 标志,可以在 kubectl apply --prune 中使用。这个标志取代了已经废弃的 --prune-whitelist 标志,其功能与之相同。
  • 废弃了以下kubectl运行标志,如果设置了这些标志将被忽略。--cascade, --filename, --force, --grace-period, --kustomize, --recursive, --timeout, --wait
  • 放弃了对容器运行时接口(CRI)v1alpha2版本的支持,这意味着容器运行时只需实现v1版本。
  • 将与job相关的指标提升为稳定指标,以遵循IndexedJobs GA,以下指标的名称已经更新,以符合指标API指南。
    • job_sync_total -> job_syncs_total
    • job_finished_total -> jobs_finished_total
  • 将cronjob_job_creation_skew指标提升为稳定指标,以遵循cronjob v2控制器,以下指标的名称已经更新,以符合指标API指南。
    • cronjob_job_creation_skew_duration_seconds -> job_creation_skew_duration_seconds
  • 将准入控制中的CEL的功能网关更名为ValidatingAdmissionPolicy。
  • kubelet_kubelet_credential_provider_plugin_duration 重命名为 kubelet_credential_provider_plugin_duration,kubelet_kubelet_credential_provider_plugin_errors 重命名为 kubelet_credential_provider_plugin_errors。

依赖

已添加的

Nothing has changed.

变化的

  • github.com/container-storage-interface/spec: v1.6.0 → v1.7.0
  • github.com/containerd/ttrpc: v1.0.2 → v1.1.0
  • github.com/docker/docker: v20.10.17+incompatible → v20.10.18+incompatible
  • github.com/docker/go-units: v0.4.0 → v0.5.0
  • github.com/google/cadvisor: v0.45.0 → v0.46.0
  • github.com/karrick/godirwalk: v1.16.1 → v1.17.0
  • github.com/moby/sys/mountinfo: v0.6.0 → v0.6.2
  • github.com/moby/term: 3f7ff69 → 39b0c02
  • github.com/opencontainers/runc: v1.1.3 → v1.1.4
  • github.com/prometheus/client_golang: v1.13.0 → v1.14.0
  • github.com/prometheus/client_model: v0.2.0 → v0.3.0
  • k8s.io/utils: 665eaae → 1a15be2

已移除的

Nothing has changed.

相关链接

英文原文:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.26.md#v1260-beta0

更新于 2022-12-01

查看kubernetes更多相关的文章或提一个关于kubernetes的问题,也可以与我们一起分享文章