Kubernetes 1.19.0发布

2020-08-27 03:46:19

SigAPI Mechanical在使用kubectl用户和API使用者可见的过时API以及群集管理员可见的度量时实现警告。返回对过时API的请求时会返回一条警告,其中包含目标删除版本和任何替换API。警告也可以由许可Web挂钩返回,并为不推荐使用的自定义资源版本指定。

从Kubernetes 1.20开始,SIG架构将实施一项新政策,在9个月内将所有RESTAPI从测试版过渡出来。新政策背后的想法是避免功能长时间停留在测试版中。一旦新的API进入测试版,它将有9个月的时间来执行以下任一操作:

如果REST API达到9个月倒计时的末尾,那么下一个Kubernetes版本将不推荐使用该API版本。更多信息可以在Kubernetes博客上找到。

Sig CLI使用kubectl对调试进行了扩展,以支持两个新的调试工作流:通过创建副本来调试工作负载,以及通过在主机名称空间中创建容器来调试节点。这些选项可以方便地执行以下操作:

修改崩溃容器以便于调试,方法是将其映像更改为busybox,或将其命令更改为睡眠1D,这样您就有时间执行kubectl exec。

由于这些新工作流不需要任何新的集群特性,因此可以通过kubectl alpha调试使用现有集群进行试验。我们很想听听您对使用kubectl进行调试的反馈。通过打开问题、访问#sig-cli或评论增强功能#1441来联系我们。

SigInstrumentation标准化了日志消息的结构和对Kubernetes对象的引用。结构化日志记录使解析、处理、存储、查询和分析日志变得更容易。KLOG库中的新方法强制实施日志消息结构。

EndpointSlices是一个令人兴奋的新API,它为Endpoints API提供了一个可伸缩和可扩展的替代方案。EndpointSlices跟踪支持服务的Pod的IP地址、端口、就绪情况和拓扑信息。

在Kubernetes 1.19中,默认情况下将启用此功能,并从EndpointSlices而不是Endpoint读取Kube-Proxy。尽管这在很大程度上是一个不可见的变化,但它应该会在大型集群中带来显著的可伸缩性改进。它还将在未来的Kubernetes版本中启用重要的新功能,如拓扑感知路由。

SIG Network已经将广泛使用的Inress API升级到Kubernetes 1.19中的全面上市。这一变化认可了Kubernetes贡献者多年来的辛勤工作,并为Kubernetes中未来网络API的进一步工作铺平了道路。

对Kubernetes的seccomp(安全计算模式)支持已经升级到通用(GA)。此功能可通过限制Pod(适用于所有容器)或单个容器的系统调用来提高工作负载安全性。

从技术上讲,这意味着已向Pod和Container securityContext对象添加了一流的seccompProfile字段:

SecurityContext:seccompProfile:type:RuntimeDefault|localhost|unconfined#选择以下三个localhostProfile之一:my-profile/profile-allow.json#仅当type==localhost时才需要。

支持seccomp.security.alpha.kubernetes.io/pod和container.seccomp.security.alpha.kubernetes.io/...。注释现在已弃用,并将在Kubernetesv1.22.0中删除。现在,自动版本偏差处理会将新字段转换为注释,反之亦然。这意味着无需执行任何操作即可转换群集中的现有工作负载。

您可以在Kubernetes.io上的新文档页面中找到有关如何使用seccomp限制容器系统调用的更多信息。

从Kuberenetes v1.19开始,Kubernetes容器镜像存储在社区控制的存储桶中,该存储桶位于{Asia,eu,us}.gcr.io/k8s-artients-prod。这个新的存储桶更新了k8s.gcr.io虚荣域。这使生产文物处于社区控制之下。

签名调度毕业生KubeSchedulerConfiguration to Beta。KubeSchedulerConfiguration功能允许您调优Kube-Scheduler的算法和其他设置。您可以在选定的计划阶段轻松启用或禁用特定功能(包含在插件中),而不必重写其余配置。此外,单个Kube-Scheduler实例可以服务不同的配置,称为配置文件。Pod可以通过.spec.SchedulerName字段选择要在其下安排日程的配置文件。

树内卷插件和所有云提供商依赖项都被移出了Kubernetes核心。通过将所有卷操作路由到各自的CSI驱动程序,CSI迁移功能允许使用旧式API的现有卷即使在删除代码后也能继续运行。此功能的AzureDisk和vSphere实现已升级到测试版。

传统上,Kubernetes调度器基于这样的假设,即集群中任何地方都有额外的持久存储可用,并且具有无限的容量。拓扑限制解决了第一点,但到目前为止,Pod调度仍然没有考虑剩余的存储容量可能不足以启动新的Pod。存储容量跟踪是一个新的Alpha特性,它通过为CSI驱动程序添加API来报告存储容量,并在为Pod选择节点时在Kubernetes调度器中使用该信息来解决这一问题。此功能可作为支持本地卷和容量更受限的其他卷类型的动态预配置的垫脚石。

CSI运行状况监控的alpha版本将与Kubernetes 1.19一起发布。此功能使CSI驱动程序能够与Kubernetes共享底层存储系统中的异常卷情况,以便可以将其报告为PVC或Pod上的事件。此功能是Kubernetes对单个卷运行状况问题进行程序化检测和解决的垫脚石。

Kubernetes提供了卷插件,其生命周期与Pod绑定,可用作临时空间(例如内置的“空目录”卷类型)或将某些数据加载到Pod中(例如内置的ConfigMap和Secret卷类型或“CSI内联卷”)。新的通用临时卷Alpha功能允许任何支持动态预配置的现有存储驱动程序用作临时卷,并将卷的生命周期绑定到Pod。

它可用于提供与根磁盘不同的临时存储,例如永久内存或该节点上的单独本地磁盘。

支持PersistentVolumeClaims支持的所有功能,例如存储容量跟踪、快照和恢复以及卷大小调整。

可以将Secret和ConfigMap卷标记为不可变,如果群集中有许多Secret和ConfigMap卷,这将显著降低API服务器上的负载。有关详细信息,请参阅ConfigMap和Secret。

用于Windows的CSI代理随1.19版本一起升级为测试版。此CSI代理允许Windows中的容器执行特权存储操作,从而使CSI驱动程序能够在Windows上运行。在测试版中,适用于Windows的CSI代理支持使用直连磁盘和SMB的存储驱动程序。

SigUI已经发布了Kubernetes Dashboard附加组件的v2。您可以在Kubernetes/Dashboard存储库中找到最新版本。Kubernetes Dashboard现在包括CRD支持、新的翻译和更新版本的AngularJS。

最初在Kubernetes 1.18中引入,Windows Containerd支持在此版本的Beta中提供。这包括添加了对Windows Server 2004版的支持(可在Windows文档中找到完整的版本兼容性)。

支持直接服务器返回(DSR)模式,允许高效地纵向扩展大量服务。

从Kubernetes 1.19开始,通过补丁发布的对Kubernetes次要版本的错误修复支持已经从9个月增加到1年。

工作组(WG)长期支持(LTS)在2019年初进行的一项调查显示,Kubernetes的很大一部分最终用户在之前9个月的支持期内没有升级。每年的支持期提供了最终用户似乎想要的缓冲,而且更符合熟悉的年度计划周期。

已知新的存储容量跟踪Alpha功能受到WaitForFirstConsumer卷绑定模式的限制:#94217。

所需操作:将核心主基映像(Kube-Controller-manager)从Debian切换到无发行版。如果您需要使用脚本支持灵活卷,请使用所需的软件包(如BASH)(#91329,@DIMS)构建您自己的映像[SIG Cloud Provider,Release,Storage and Testing]

Azure blob磁盘功能(Kind:Shared,Dedsive)已弃用,您应该使用Kind:Managed in kubernetes.io/azure-disk存储类。(#92905,@andyzhangx)[SIG云提供商和存储]。

CVE-2020-8559(中等):从受危害的节点到群集的权限提升。有关更多详细信息,请参阅https://github.com/kubernetes/kubernetes/issues/92914。API服务器将不再代理升级请求的非101响应。这可能会中断使用非101响应代码响应升级请求的代理后端(如扩展API服务器)。(#92941,@tallclair)[西格API机械]。

Kubeadm不会在/var/lib/kubelet/kubeadm-flag s.env中设置已弃用的';--cgroup-driver';标志,它将在kubelet config.yaml中设置。如果您在/var/lib/kubelet/kubeadm-flag s.env或/etc/default/kubelet(对于RPM为/etc/sysconfig/kubelet)中有此标志,请删除它并使用KubeletConfiguration(#90513,@SataQiu)[SIG群集生命周期]设置值。

Kubeadm现在尊重ClusterConfiguration中用户指定的etcd版本,并正确使用它们。如果用户不想坚持ClusterConfiguration中指定的版本,他们应该编辑kubeadm-config配置映射并将其删除。(#89588,@rosti)[签名群集生命周期]。

即使systemd解析的服务处于活动状态,Kubeadm也会遵守用户设置的Resolution vConf值。Kubeadm不再在/var/lib/kubelet/kubeadm-flag s.env中的';--Resolution v-conf';中设置标志。如果您在/var/lib/kubelet/kubeadm-flag s.env或/etc/default/kubelet(对于RPM为/etc/sysconfig/kubelet)中有此标志,请删除它并使用KubeletConfiguration(#90394,@SataQiu)[SIG群集生命周期]设置值。

Kubeadm:将";kubeadm init&34;阶段kubelet-start&34;移到初始化工作流的后面,移到";kubeconfig&34;阶段之后。这使得kubeadm仅在KubeletConfiguration组件配置文件(/var/lib/kubelet/config.yaml)生成后才启动kubelet,并解决了OpenRC等init系统无法崩溃循环kubelet服务的问题。(#90892,@xhoniex)[签名群集生命周期]。

Kubeadm config Upload命令在一个完整的GA弃用周期后最终被删除。如果您仍在使用它,请改用kubeadm初始阶段Upload-config&39;(#92610,@rosti)[SIG群集生命周期]。

.bindTimeoutSeconds作为VolumeBinding插件参数的一部分进行了移动,该插件参数可以按配置文件单独配置。

已删除.disablePreemption。用户可以通过禁用PostFilter插件DefaultPreemption";来禁用抢占。(#91420,@pancernik)[签名日程安排]。

添加了对vSphere树内卷迁移到vSphere CSI驱动程序的支持。树内vSphere卷插件将在未来版本中弃用并删除。

在vSphere上自部署Kubernetes的用户应启用CSIMigation+CSIMMigrationvSphere功能并安装vSphere CSI驱动程序(https://github.com/kubernetes-sigs/vsphere-csi-driver)),以避免届时中断现有的Pod和PVC对象。用户应开始直接对任何新卷使用vSphere CSI驱动程序。

VSphere卷的CSI迁移功能还要求最低vSphere vCenter/ESXi版本为7.0u1,最低硬件版本为VM版本15。

对于树内vSphere卷插件,VSAN原始策略参数已弃用,并将在未来版本中删除。(#90911,@divyenpatel)[SIG API机械、节点和存储]。

身份验证.k8s.io/v1beta1和authization.k8s.io/v1beta1在1.19中已弃用,取而代之的是v1级别,将在1.22中删除(#90458,@Deads2k)[SIG API机械和身份验证]。

1.19中弃用了.k8s.io/v1beta1,目标是在1.22中删除,请改用v1。(#90559,@Deads2k)[sig可伸缩性]。

对于CSI卷,不推荐在NodeStage和NodePublish之间调用NodeExpanVolume的行为。如果CSI驱动程序具有节点EXPAND_VOLUME能力(#86968,@gnufied),则它们应支持在NodePublish之后调用NodeExpanVolume[信号存储]

壮举:Azure磁盘迁移在1.19中进入测试版。功能门CSIMigation to Beta(默认情况下打开)和CSIMigationAzureDisk到Beta(默认情况下关闭,因为它需要安装AzureDisk CSI驱动程序)树内AzureDisk插件";kubernetes.io/azure-disk";现在已弃用,将在1.23中删除。用户应启用CSIMigation+CSIMMigrationAzureDisk功能并安装AzureDisk CSI驱动程序(https://github.com/kubernetes-sigs/azuredisk-csi-driver)),以避免届时中断现有的Pod和PVC对象。用户应开始对任何新卷直接使用AzureDisk CSI驱动程序。(#90896,@andyzhangx)[SIG云提供商和存储]。

Kube-apiserver:ComponentStatus API已弃用。此API提供etcd、Kube-Scheduler和Kube-Controller-manager组件的状态,但仅当这些组件位于API服务器本地,并且当Kube-Scheduler和Kube-Controller-Manager公开不安全的健康端点时才起作用。与此API不同,在Kube-apiserver运行状况检查中包括etcd运行状况,并且可以直接针对这些组件的运行状况端点进行Kube-Scheduler/Kube-Controller-Manager运行状况检查。(#93570,@Liggitt)[SIG API机械、应用程序和集群生命周期]。

Kubeadm:kubeadm config view命令已弃用,将在功能版本中删除,请使用kubectl get cm-o yaml-n kube-system kubeadm-config直接获取kubeadm配置(#92740,@SataQiu)[SIG群集生命周期]。

Kubeadm:不建议使用";kubeadm alpha kubelet config enable-dynamic&34;命令。要继续使用该功能,请遵循位于k8s.io的";动态Kubelet配置指南。(#92881,@neolit123)[签名集群生命周期]。

Kubeadm:反对使用实验性补丁这个特性。支持的补丁程序格式与kubectl补丁程序";相同。它们作为文件从目录中读取,并可在初始化/加入/升级期间应用于kubeadm组件。暂时仅支持静态实例打补丁。(#92017,@neolit123)。

Kubeadm:删除";kubeadm alpha证书续订";(#90143,@neolit123)[SIG群集生命周期]的过时&-use-api&34;标志。

由于未使用(#91883,@SataQiu)[SIG调度和测试],调度器的Alpha特性资源限制优先级函数已完全删除。

为CSID驱动程序引入了一个新的alpha级别字段SupportsFsGroup,以允许它们指定是否支持卷所有权和权限修改。必须启用CSIVolumeSupportFSGroup功能网关才能使用此字段。(#92001,@huffmanca)[SIG API机械、命令行界面和存储]

添加了seccomp配置文件的Pod版本偏差策略,以将过时的注释与新的API Server字段同步。有关更详细的说明,请参阅KEP中的相应部分。(#91408,@saschagrunert)[签名应用程序、身份验证、命令行界面和节点]。

准入Web挂钩现在可以使用准入查看响应中的.response.warning字段返回呈现给API客户端的警告消息。(#92667,@liggitt)[SIG API机械和测试]。

CertificateSigningRequest API条件已更新:添加了Status字段;此字段默认为True,并且只能针对已批准、已拒绝和未通过的条件设置为True。

添加了失败的条件类型,以允许签名者指示永久性失败;可以通过certificatesigningrequest/status子资源添加此条件。

不能再从CSR(#90191,@Liggitt)中删除已批准、已拒绝和未通过的条件[SIGAPI机械、应用程序、身份验证、命令行界面和节点]。

群集管理员现在可以通过在kubelet配置文件中将enableSystemLogHandler设置为false来关闭kubelet中的/logs端点。仅当enableDebuggingHandler也设置为true时,enableSystemLogHandler才能设置为true。(#87273,@saranbalaji90)[签名节点]。

自定义终结点现在由新的EndpointSliceMirroring控制器镜像到EndpointSlices。(#91637,@robscott)[SIG API机械、应用程序、身份验证、云提供商、仪器、网络和测试]。

CustomResourceDefinitions通过将spec.versions[*].deposated设置为true添加了对将版本标记为已弃用的支持,并支持使用spec.versions[*].deprocationWarning字段选择性地覆盖默认的弃用警告。(#92329,@liggitt)[西格原料药机械]

修复反射器中无法从资源版本过大错误中恢复的错误(#92537,@wojtek-t)[SIG API Mechanical]。

已修复:日志时间戳现在包括尾随零以保持固定宽度(#91207,@iamchuckss)[签名应用程序和节点]。

GenericEphmeralVolume特性门下的新alpha特性GenericEphmeralVolume提供了EmptyDir卷更灵活的替代方案:与EmptyDir一样,Kubernetes会自动为每个Pod创建和删除卷。但是,因为使用的是正常的资源调配过程(PersistentVolumeClaim),所以存储可以由第三方存储供应商提供,并且所有常见的卷功能都可以工作。卷不需要清空;例如,支持从快照恢复。(#92784,@pohly)[SIG API机械、应用程序、身份验证、命令行界面、规范、节点、调度、存储和测试]。

Go1.14.4现在是构建Kubernetes(#92438,@Liggitt)所需的最低版本[SIGAPI机械、认证、命令行界面、云提供商、集群生命周期、仪器、网络、节点、发布、存储和测试]。

K8s.io/apimachines-scheme.Convert()现在仅使用显式注册的转换-基于反射的默认转换不再可用。+k8s:转换生成标签可以与k8s.io/代码生成器组件一起使用来生成转换。(#90018,@wojtek-t)[SIG API机械、应用和测试]。

KUBE-PROXY:ADD--BIND-ADDRESS-HARD-FAIL标志,将绑定端口失败视为致命错误(#89350,@SataQiu)[SIG集群生命周期和网络]。

在metav1上设置了Kubebuilder验证标签。生成CRD的条件(#92660,@Damemi)[SIG API Mechanical]。

Kubelet--runonce选项现在也可以在Kubelet的配置文件中作为runOnce使用。(#89128,@vincent178)[签名节点]

Kubelet:添加--日志记录格式标志以支持结构化日志记录(#91532,@afrouzMashaykhi)[SIGAPI机械、集群生命周期、规范和节点]。

Kubernetes现在使用golang 1.15.0-rc.1构建。当不存在使用者替代名称时,X.509服务证书上的CommonName字段被视为主机名,这种过时的传统行为现在默认情况下被禁用。可以通过向GODEBUG环境变量添加值x509IGNORRECN=0来临时重新启用它。(#93264,@Just Augustus)[SIG API机械、身份验证、命令行界面、云提供商、群集生命周期、工具、网络、节点、版本、可扩展性、存储和测试]。

将不可变机密/配置地图功能升级到测试版,并默认启用该功能。这允许在机密中设置不可变字段。

.