gpt4 book ai didi

docker - Kubernetes 和 Docker 效率

转载 作者:行者123 更新时间:2023-12-02 11:39:03 26 4
gpt4 key购买 nike

关闭。这个问题不符合Stack Overflow guidelines .它目前不接受答案。












想改进这个问题?将问题更新为 on-topic对于堆栈溢出。

2年前关闭。




Improve this question




我一直在寻找有关 Kubernetes 和 Docker 在使用机器资源方面的效率的信息,但到目前为止我还没有找到太多信息。这是我的三个问题,都是关于 Kubernetes+Docker 的:

  • 如果同一节点上的多个容器运行相同的二进制文件,所有这些实例之间是否共享代码页?也就是说,是否在节点上为所有这些进程分配了一组物理页面?例如,如果我正在运行像 Istio 这样的服务网格,它在每个 pod 中运行 Envoy,系统是否足够智能,只能将 Envoy 代码加载到内存中一次,或者发生的所有间接操作都会阻止 Linux 内核识别可以分享吗?
  • 在大型 Kubernetes 部署中,每个节点上最终都会有大量冗余下载的 docker 镜像。相反,为所有节点都可以从中获取这些图像的单个集群内存储库似乎更有效。我看到了this关于让 docker 将 NFS 用于公共(public)图像存储。这是唯一的答案吗?
  • 我听说 Kubernetes 将在单个节点(30)上调度的 Pod 数量存在实际限制。如此小的限制迫使您使用较小的虚拟机,以便能够使它们完全饱和。有谁知道这个限制为什么存在以及最终是否会提高?我在尝试在根本不使用虚拟机的裸机上运行 Kubernetes 时提出这个问题。在这样的世界中,我希望能够在(大型)物理机器上打包超过 30 个 pod。

  • 感谢您的任何见解或指示。

    最佳答案

    您以计划将 docker 用作 kubernetes 的容器运行时的方式陈述您的问题。这很好 - 但还有更多选择。根据运行时的不同,答案会发生变化。
    一般来说,kubernetes 提供了对 Pod/容器的实际调度和运行的抽象。也许您在可以用更多便宜的金属解决的细节上投入了太多的人力时间。

    单个节点上的多个容器通常(docker/containerd/crio)只是系统进程。就像您自己多次启动 Apache httpd 一样。如果内核使用内存去重,它确实可以共享页面。
    如果您使用启动微型 VM 的容器运行时(firecracker,kata,...),我怀疑内存重复数据删除是可能的。

    我不建议为容器图像共享存储空间,例如 f.e.与 NFS。通过一些客户设置,我不得不诊断由此引起的问题。像死锁一样。基本上,您会降低集群的稳健性以节省磁盘空间。只需使用更多的金属。

    通常的限制是每个节点 110 个 Pod,这通常是足够的。您可以使用 --max-pods 更改此限制。 kubelet 进程或 kubelet 配置文件的参数。限制的原因是 pod 的管理会在 kubelet 和 etcd/apiserver 端产生工作量。

    关于docker - Kubernetes 和 Docker 效率,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/60379556/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com