最近更新时间:2023-10-31 20:00:29
本文介绍Kubernetes 1.21版本相对于1.19版本的变更特性。
具有多个容器的Pod可以使用kubectl.kubernetes.io/default-container注释,以便为kubectl命令预先选择一个容器。更多信息可以在KEP-2227中阅读。
此功能允许用户指定特定Secret或ConfigMap的内容在其对象生命周期内是不可变的,对于这样的实例,Kubelet将不会监听/轮询更改,从而减少了apiserver的负载。
Kubelet中采用结构化日志记录
支持存储容量跟踪功能
直到现在,Pod的调度仍然是在不考虑剩余存储容量可能不足以启动新Pod的情况下进行的。存储容量跟踪通过添加一个CSI驱动程序报告存储容量的API,并在Kubernetes调度器选择节点时使用该信息来解决这个问题。此功能为支持本地卷和其他容量受限的卷类型的动态配置提供了基础。
它可以用于提供与根磁盘不同的临时存储,例如持久内存或节点上的单独本地磁盘。支持所有用于卷配置的StorageClass参数。支持PersistentVolumeClaims支持的所有功能,例如存储容量跟踪、快照和恢复以及卷大小调整。
此功能改善了安全性,并允许CSI驱动程序接收Pod绑定的服务账户令牌,还提供了重新发布卷的开关,以便可以刷新短生命周期卷。
此功能使CSI驱动程序能够将底层存储系统的异常卷条件与Kubernetes共享,以便将其作为PVC或Pod的事件报告。此功能为Kubernetes通过编程方式检测和解决单个卷健康问题铺平了道路。
现在可以通过KUBERNETES_EXEC_INFO环境变量将client-go的凭据插件传递给当前集群信息。请在client-go凭据插件文档中了解更多信息。
在这个版本中,CronJob控制器的另一种实现方式作为一个Alpha功能可用,通过使用informer而不是轮询来实现实验性能改进。
包括SupportNodePidsLimit(节点到Pod的PID隔离)和SupportPodPidsLimit(每个Pod限制PID数量),默认情况下启用了这些功能,并且已正式可用。
自v 1.20起,默认情况下启用了APF功能,使得kube-apiserver能够根据优先级级别对传入的请求进行分类。
为了支持双栈服务(Dual-Stack Services),IPv4/IPv6双栈在1.20版本中进行了重新实现,基于用户和社区的反馈。如果您的集群启用了双栈功能,您可以创建可以使用IPv4、IPv6或两者的服务,并且您可以为现有服务更改此设置。详细信息请参阅更新的IPv4/IPv6双栈文档。
从这个版本开始,go1.15.5已经整合到Kubernetes项目中,包括其他与基础设施相关的更新。
该功能为Kubernetes提供了一种标准的方式来触发卷快照操作,无论底层存储提供者是否支持,Kubernetes用户都可以在任何Kubernetes环境中以可移植的方式使用快照操作。此外,这些Kubernetes快照基元作为基本构建块,可以解锁开发高级企业级存储管理功能的能力,包括应用程序或集群级别的备份解决方案。需要注意的是,快照支持需要Kubernetes发行商捆绑Snapshot控制器、Snapshot CRDs和验证Webhook。同时,还必须在集群上部署支持快照功能的CSI驱动程序。
默认情况下,如果指定了fsgroup设置,它会递归地更新卷中每个文件的权限。如果卷中的文件很多,这可能会导致挂载和Pod启动非常缓慢。这个设置允许Pod指定一个PodFSGroupChangePolicy,表示只有在根目录的权限和所有权与卷上的预期权限不匹配时,才会更改卷的所有权和权限。
这允许CSIDrivers明确指示是否希望Kubernetes通过fsgroup来管理其卷的权限和所有权。
在1.20版本中,引入了一个新的Alpha功能CSIServiceAccountToken。这个功能允许CSI驱动程序模拟它们为其挂载卷的Pod。这在挂载过程中提高了安全性,其中卷在Pod的服务账户上进行了ACL控制,而不会给予CSI驱动程序的服务账户不必要的权限。这个功能对于处理密钥的CSI驱动程序特别重要,比如secrets-store-csi-driver。由于这些令牌可以轮换和短暂存在,这个功能还提供了一个开关,让CSI驱动程序可以定期使用新令牌接收NodePublishVolume RPC调用。
这使得kubelet能够意识到节点系统关机,在系统关机期间体面地终止Pod,这个功能可以通过功能门控来启用。
现在可以配置日志以使用运行时保护来防止泄露敏感数据,详见文档。
通过/metrics/resources,现在可以按需计算指标;启用后,该端点将报告所有正在运行的Pod的请求资源和期望的限制。
RootCAConfigMap升级为Beta版本,与BoundServiceAccountTokenVolume分离。kube-root-ca.crt ConfigMap现在默认在每个命名空间中可用,它包含用于验证kube-apiserver连接的证书颁发机构捆绑包。
kubectl debug升级为Beta版本
Pod Hostname作为FQDN升级为Beta版本
之前在1.19版本中引入了SetHostnameAsFQDN功能,现在默认情况下已启用。有关此行为的更多详细信息,请参阅DNS for Services and Pods文档。
绑定到Pod的服务账户令牌现在是一个稳定的功能,并且在1.21版本中将删除功能开关。
node.k8s.io API组从v1beta1升级到v1。v1beta1现已弃用,并将在未来的版本中删除。
有关云服务提供商创建此类二进制文件实例的详细信息可以在[此处](kubernetes/staging/src/k8s.io/cloud-provider/sample at master · kubernetes/kubernetes · GitHub)找到。如果有关于构建Cloud Controller Manager的问题,请联系SIG Cloud Provider。关于托管Kubernetes解决方案上的Cloud Controller Manager的问题应该咨询相关的云服务提供商。关于非托管解决方案上的Cloud Controller Manager的问题可以向SIG Cloud Provider提出。
详情请参考:
纯净模式