首页 > 解决方案 > Kubernetes - 从 Minikube 到生产

问题描述

我创建了一个简单的 PHP api 应用程序,它与 mysql 数据库一起使用来存储数据。我一直在通过 Minikube 在我的 Windows 10 机器上试验 Kubernetes。

我刚刚了解了所涉及的想法,但我不确定如何正确实施。到目前为止,我已经使用 Kompose 从现有的 docker-compose 文件创建了一组 yaml 文件。这已经成功了一半。

要将我的应用程序代码放入托管 PHP 的 pod 中,我一直在使用 hostPath 从我的本地计算机共享。我安装到 minikube 机器并从那里共享。我无法通过其他方式分享。应用程序代码托管在 github 存储库中。

我的问题是:

  1. 将我的应用程序代码安装到 pod 中(假设这类似于 docker 中发生的情况)是正确的方法吗?我不清楚从 docker hub 检索到的图像上究竟保存了哪些信息。尽管我已经阅读了将构建环境与您的机器隔离的容器。

  2. 这种方法如何转化为托管在云上的生产环境?我看到有各种存储类型。例如,我想尝试在 AWS 上进行部署,只是想看看这在实践中是如何工作的。

我真的在寻找指导,从在我的机器上工作的网络上找到的教程,到可以为托管在云上的客户做的事情。随着时间的推移,这可能会扩展到更微服务风格的架构。

标签: dockerkubernetescloudminikube

解决方案


您描述的方法主要用于开发设置,您希望将代码作为卷安装到容器中,这样您就不必在每次代码更改时重新构建。通常使用 docker-compose 文件完成。

对于生产设置,您希望 docker 映像正确工作,并且只将卷安装到您想要持久的数据,通常数据库是核心示例。为此,EKS 已深度集成到 AWS 基础设施中,并将按需创建 EBS 卷。大多数情况下,您不需要配置任何卷,甚至不需要关心(除非您需要多个读写卷来进行扩展)。

对于 PHP 应用程序,您真的不应该在 pod 中保留任何数据,因为当您需要扩展应用程序时,它会产生其他问题。此外,管理需要持久化的文件的一个好方法是 S3(AWS 简单存储服务)。

所以一般来说,您需要为每个应用程序部署一个服务来访问该应用程序上的每个 pod,然后需要一个入口对象来将流量从互联网路由到每个 pod。


推荐阅读