2021年9月29日,Kubernetes(k8s) v1.23.0-alpha.3已经使用Golang 1.17.1版本构建并推送。
种类变更
弃用
- 在EgressSelectorConfiguration API中删除
master
作为有效的EgressSelection类型。 - 移除VolumeSubpath功能网关
- 已经删除了废弃的 --experimental-bootstrap-kubeconfig 标志。这可以通过 --bootstrap-kubeconfig 设置。
API变化
- Client-go模拟配置可以指定一个 UID 以在请求中传递模拟的 uid 信息。
- IPv6DualStack功能移至稳定版。节点IPAM控制器的控制器管理器标志略有变化。
- 当配置双栈集群时,用户必须同时指定 --node-cidr-mask-size-ipv4 和 --node-cidr-mask-size-ipv6 来设置每个节点的IP掩码大小,而不是以前的 --node-cidr-mask-size 标志。
- --node-cidr-mask-size与--node-cidr-mask-size-ipv4和--node-cidr-mask-size-ipv6相互排斥。
- 单栈集群不需要改变,但可以选择使用更具体的标志。用户可以使用较早的 --node-cidr-mask-size 标志或较新的 --node-cidr-mask-size-ipv4 或 --node-cidr-mask-size-ipv6 标志来配置每个节点的IP掩码大小,前提是该标志的IP系统与集群的IP系统(--cluster-cidr)匹配。
- Kubelet:将KubeletConfiguration v1beta1 ResolverConfig字段从一个string变成
*string
。
功能
- 添加机制,将简单的sniffer(嗅探器)类加载到fluentd-elasticsearch镜像中。
- Kubeadm: 在预检期间不检查加入工作节点的'/etc/kubernetes/manifests'文件夹是否为空。
kube-apiserver的Prometheus指标已经扩展了一些,描述了处理LIST请求的成本。 如下:
- apiserver_cache_list_total: 从watch缓存提供的LIST请求的计数器,按resource_prefix和index_name细分。
- apiserver_cache_list_fetched_objects_total: 在为LIST请求提供服务的过程中,从观察缓存中读取的对象的计数器,按资源前缀和索引名称细分。
- apiserver_cache_list_evaluated_objects_total: watch缓存的LIST请求提供服务的过程中测试的对象的计数器,按resource_prefix细分。
- apiserver_cache_list_returned_objects_total: 从watch缓存为 LIST 请求返回的对象计数器,按 resource_prefix 细分
- apiserver_storage_list_total: 从 etcd 提供的 LIST 请求计数器,按资源细分
- apiserver_storage_list_fetched_objects_total: 在服务 LIST 请求的过程中从 etcd 读取的对象计数器,按资源细分
- apiserver_storage_list_evaluated_objects_total: 在处理来自 etcd 的 LIST 请求的过程中测试的对象计数器,按资源细分
- apiserver_storage_list_returned_objects_total: 为来自 etcd 的 LIST 请求返回的对象计数器,按资源细分
Bug和回退
- 改变 kube-proxy start 的行为; 当当前的 sysctl 值已经设置得更高时,不会尝试设置特定的 sysctl 值(在非 init 命名空间中的最新内核版本中不再起作用)。
- 修复job控制器同步:如果发生冲突,确保使用最新信息进行同步。 提高 JobTrackingWithFinalizers 的可靠性。
- 修复了节点没有区域标签时的系统默认拓扑传播。现在默认情况下,Pod可以正确传播。
- 没有选择器的无头服务在创建时没有启用双栈,将被默认为 RequireDualStack 而不是 PreferDualStack。 这与创建时启用了双栈的服务是一致的。
- Kube-apiserver: 通过
events.k8s.io
API组为集群范围内的对象创建的事件现在也允许在默认的命名空间中,以便与事件客户端和v1
API兼容。 - 如果启用了存储对象启用了保护功能,Kube-controller将错误地启用对通用短暂内卷(inline volumes)的支持。
- Kubeadm:将验证Linux主机上是否启用swap的预检(称为'Swap'),变为警告而不是错误。这与kubelet中的NodeSwap功能网关分级定为Beta版并在1.23中默认启用允许Linux主机上的Swap支持。在kubeadm的下一个版本(1.24)中,预检将被删除,因此我们建议你停止使用它 -- 例如通过 --ignore-preflight-errors或kubeadm配置。
- 使 etcd 客户端(由 API 服务器使用)重试某些类型的错误。 可以在 https://github.com/etcd-io/etcd/blob/main/api/v3rpc/rpctypes/error.go#L72 找到可重试(codes.Unavailable)错误的完整列表
- 当使用固定 UID 删除并重新创建静态 pod 文件时,pod 未正确重新启动。
- XFS文件系统现在强制格式化(选项
-f
),以避免由于检测到魔术超级块而出现格式化问题。 这与 ext3/4 文件系统的格式化行为一致。
其他(Cleanup 或 Flake)
- 增强了由于pod的PersistentVolumeClaim绑定到不存在的PersistentVolume而未被调度器选中的节点的错误信息。
- 将
cmd/proxy/{config, healthcheck, winkernel}
迁移至结构化日志 - 将 cmd/proxy/app 和 pkg/proxy/meta_proxier 迁移到结构化日志上
- 将 pkg/proxy 迁移至结构化日志
- 将 pkg/proxy/winuserspace 迁移至结构化日志
- 自v1.22版起,GA的
BoundServiceAccountTokenVolume
功能网关被无条件启用,不再通过--feature-gates
参数指定。 - 支持
PodPidsLimit
和支持NodePidsLimit
功能网关,从v1.20版起为GA无条件启用,不能再通过`--feature-gates'参数指定。 - 更新构建镜像至Debian 11 (Bullseye)
- debian-base:bullseye-v1.0.0
- debian-iptables:bullseye-v1.0.0
- go-runner:v2.3.1-go1.17.1-bullseye.0
- kube-cross:v1.23.0-go1.17.1-bullseye.1
- setcap:bullseye-v1.0.0
- cluster/images/etcd: Build 3.5.0-2 image
- test/conformance/image: Update runner image to base-debian11
依赖关系
已经添加的
Nothing has changed.(没有任何变化。)
变更
- github.com/json-iterator/go: v1.1.11 → v1.1.12
- github.com/modern-go/reflect2: v1.0.1 → v1.0.2
已删除
Nothing has changed.(没有任何变化。)
相关链接
英文原文来自:https://github.com/kubernetes/kubernetes/blob/master/CHANGELOG/CHANGELOG-1.23.md