(停止维护)ACK发布Kubernetes 1.20版本说明

阿里云容器服务ACK严格遵循社区一致性认证。本文介绍ACK发布Kubernetes 1.20版本所做的变更说明。

版本升级说明

ACK针对Kubernetes 1.20版本提供了全链路的组件优化和升级。

核心组件

版本号

升级注意事项

Kubernetes

1.20.11

  • 当您的ACK集群升级到1.20及以上Kubernetes版本前,请确保集群内部署的Admission Webhook组件自签发的服务端证书已经包含必要的SAN字段。更多信息,请参见Helm Chart配置示例

  • 删除selfLink字段,不再支持。更多信息,请参见Stop setting SelfLink in kube-apiserver

    如果您的业务依赖selfLink,需提前处理。如安装了开源nfs-client-provisioner,需提前升级组件至不依赖selfLink的版本。

  • 对于专有版的Master节点标签,ACK默认使用node-role.kubernetes.io/control-plane,同时在后续版本(不包含1.20)废弃使用node-role.kubernetes.io/master

  • 若您的集群使用FlexVolume存储插件且安装了alicloud-nas-controller组件,在将低版本集群升级至Kubernetes 1.20版本前,请将alicloud-nas-controller的镜像升级到v1.14.8.17-7b898e5-aliyun或更高版本。同时,由于FlexVolume存储插件已经弃用,建议您将FlexVolume迁移至CSI插件。具体操作,请参见迁移Flexvolume至CSI

Docker Runtime

19.03.5

Containerd Runtime

1.4.4

etcd

3.4.3

CoreDNS

1.7.0

  • 新版本删除了对已弃用插件Upstream的兼容。如果Corefile配置项中包含Upstream插件,Upstream插件会在升级过程中被安全、自动地删除。

  • 更新指标(Metrics)名称。如果您的监控系统依赖于CoreDNS指标,请注意修改。更多信息,请参见Metric Changes

NVIDIA Container Runtime

3.4.1

版本解读

资源变更与弃用

  • 【弃用】废弃Docker运行时:Docker运行时的支持在1.20被标记为废弃,目前您可以继续在集群中使用Docker。社区计划在后续版本中移除。该变动与集群所使用的容器镜像(Image)无关。您依然可以使用Docker构建您的镜像。更多信息,请参见Dockershim Deprecation FAQ

  • 【弃用】对于专有版的Master节点标签,ACK默认使用node-role.kubernetes.io/control-plane,同时在后续版本(不包含1.20)废弃使用node-role.kubernetes.io/master

  • 【弃用】删除selfLink字段,不再支持。更多信息,请参见Stop setting SelfLink in kube-apiserver

  • 【弃用】Ingress和IngressClass资源的extensions/v1beta1 API和networking.k8s.io/v1beta1 API已经废弃,并且会在1.22版本之后被移除。请使用networking.k8s.io/v1替代。

    说明

    由于ACK中默认使用的Nginx Ingress Controller组件的限制,ACK中Ingress和IngressClass资源的networking.k8s.io/v1beta1 API可以正常被使用。

  • 【变更】集群内部署的Admission Webhook组件自签发的服务端证书需包含必要的SAN字段。当您的ACK集群升级到1.20及以上Kubernetes版本前,请确保集群内部署的Admission Webhook组件自签发的服务端证书已经包含必要的SAN字段。更多信息,请参见Helm Chart配置示例

功能增强

  • kubelet修复探测超时时间对EXEC探测方式不准的问题。修复之后默认的EXEC探测方式的探测超时时间默认为1秒(超时时间较短)。如果您未对EXEC探测方式的探测超时时间设置特定值,建议您加上此配置。

  • API优先级和公平性( APF )是Kubernetes默认开启的测试版(Beta)特性。您可以通过此特性对不同的请求进行限制和优先级划分。更多信息,请参见API Priority and Fairness

  • 端点切片(Endpoint Slices)特性默认启动。从1.19开始,kube-proxy默认启用Endpoint Slices,支持更大规模的集群。更多信息,请参见endpoint-slices

  • 不可修改ConfigMap和Secret。不可修改ConfigMap和Secret特性进入测试版(Beta)。如果设置ConfigMap或Secret为不可变,将不再允许修改,以降低kube-apiserver压力。更多信息,请参见Immutable ConfigMaps

ACK对Kubernetes 1.20版本的增强

管控面增强

  • 观测性:对Request、Watch等机制增加了诸多指标(Metrics),增加了Master组件的可观测性。

  • 稳定性:增加对存储层(etcd)的保护,避免了集群启动时,过多请求直接穿透到etcd,增强了系统的稳定性。

  • 性能优化:通过增加索引,加速了List请求,减少kube-apiserver CPU消耗。

Windows容器增强

  • 支持并默认开启端点切片(Endpoint Slices)。

  • 支持Device Plugin。更多信息,请参见Device Plugins

性能优化

KubeProxy:1.20.11版本中KubeProxy兼容了Alibaba Cloud Linux2(kernel-4.19.91-23)及以上的版本,在开启IPVS模式时,不设置conn_reuse_mode为0。更多信息,请参见IPVS

参考链接