Google平行化容器启动与资料下载,大幅加快GKE应用程序启动速度

Google在其Kubernetes服务GKE中,添加镜像文件流媒体新功能,官方提到,这是一个革命性的功能,能够明显缩短应用程序扩展的时间,让企业有能力更快地回应突然增加的用户需求,并且也能配置更少的备用容量来节省支出。

镜像文件流媒体能够将镜像文件的拉取时间降到数秒钟,即便是大型镜像文件,也能忽略容器大小,使得用户的应用程序,能够在GKE流媒体容器资料的同时快速启动。

Google解释,传统Kubernetes扩展应用程序的工作方式,必需要等到容器镜像文件完全下载到节点上,才能开始启动应用程序。因此当容器镜像文件越大,启动需要的时间就越长,尽管大多数应用程序,其实不需要等到容器中每字节资料都到齐,就可以开始启动,Google举例,像是应用程序可能会花费大量时间连接到外部数据库,就几乎不需要用到来自镜像文件的任何资料。

因此Google想让应用程序在需要的时候,再将资料交付给应用程序,以节省额外下载资料的时间,因此开发出了镜像文件流媒体技术,其运行的原理是使用网络挂载的方式,在containerd中挂载容器资料层。

一旦用户的镜像文件挂载完成,容器就能在数秒钟内,从ImagePulling状态转换成为Running,这能有效平行化应用程序启动和需要的容器资料传输,因此用户也就能获得更快的容器启动和自动缩放速度。Google提到,镜像文件流媒体的性能根据配置而有所不同,但一般而言,镜像文件越大,使用镜像文件流媒体所获得的好处就越大。

除了平行资料传输之外,GKE镜像文件流媒体还采用多层级缓存系统,从节点上的内存和磁盘缓存开始,向上到地区层级的Artifact Registry,官方提到,该缓存是专为镜像文件流媒体设计,使用与Cloud Spanner相同的技术。

不过,由于镜像文件流媒体容器读取的资料来自网络流媒体传输,与从磁盘读取的速度相比还是稍慢,但是Google提到,这个影响会在容器启动的时候被抵消,因为容器可以跳过整个镜像文件拉取过程,而在应用程序开始执行之后,就能够获得相同的读取性能。GKE还是会像过去一样,平行下载完整的容器镜像文件,只要下载完成,容器就能获得相同的磁盘读取性能。

用户要使用GKE镜像文件流媒体功能,就必需要使用Google的构件注册表Artifact Registry,Container Registry或是外部的容器注册表均不支持镜像文件流媒体。无论是新的或是现有GKE集群,都可以使用这个新功能,Google提醒用户,镜像文件流媒体会在节点上预留部分内存供缓存使用,这样会减少节点上可用于工作负载的内存。