加入收藏 | 设为首页 | 会员中心 | 我要投稿 PHP编程网 - 黄冈站长网 (http://www.0713zz.com/)- 数据应用、建站、人体识别、智能机器人、语音技术!
当前位置: 首页 > 服务器 > 搭建环境 > Linux > 正文

如何优雅的在 Kubernetes 集群里缓存容器镜像

发布时间:2022-01-14 11:14:06 所属栏目:Linux 来源:互联网
导读:当容器化应用部署到Kubernetes 集群时,K8s控制平面会将 Pod调度到集群中的工作节点。运行在工作节点中的节点代理(Kubelet)与安装在节点中的容器运行时(例如 containerd)协调,并从镜像registry中拉取必要的容器镜像。根据镜像的大小和可用的网络带宽,
   当容器化应用部署到Kubernetes 集群时,K8s控制平面会将 Pod调度到集群中的工作节点。运行在工作节点中的节点代理(Kubelet)与安装在节点中的容器运行时(例如 containerd)协调,并从镜像registry中拉取必要的容器镜像。根据镜像的大小和可用的网络带宽,将所有镜像拉取到节点需要时间。因此,在任何容器化应用程序中,我们都应该意识到由于从registry中获取镜像而引入的延迟。然而,作为进程运行的传统应用程序(例如由 systemd管理)不会受到这种延迟的影响,因为所有必需的文件都已经安装在机器中。
 
   想象一下,您的容器化应用程序遇到了突然的流量激增,它需要立即横向扩展(即需要创建额外的实例)。如果您配置了 Horizontal Pod Autoscaler (HPA),K8s控制平面会创建额外的 Pod 副本。但是,这些 Pod 将无法用于处理增加的流量,直到所需的镜像被拉取,容器启动并运行。或者假设您的应用程序需要处理高速实时数据。此类应用程序对其启动和扩展的速度有严格的要求,因为它实现的目的的本质。
 
   简而言之,在一些用例中,由于从registry中提取镜像而引入的延迟是不可接受的。此外,集群和镜像registry之间的网络连接可能会受到带宽不足的影响,或者连接可能会完全丢失。在某些情况下,尤其是在边缘计算中,应用程序必须优雅地容忍间歇性网络连接。这些挑战可以通过不同的方式来解决。在这些场景中非常有用的一种解决方案是将容器镜像直接缓存在集群工作节点上,这样 Kubelet 不需要拉取这些镜像,而是立即使用已经缓存在节点中的镜像。在这篇博客中,我将解释如何使用开源项目kube-fledged 在 Kubernetes 集群中构建和管理容器镜像的缓存。

(编辑:PHP编程网 - 黄冈站长网)

【声明】本站内容均来自网络,其相关言论仅代表作者个人观点,不代表本站立场。若无意侵犯到您的权利,请及时与联系站长删除相关内容!

    热点阅读