docker - Kubernetes - 从 Minikube 到生产
问题描述
我创建了一个简单的 PHP api 应用程序,它与 mysql 数据库一起使用来存储数据。我一直在通过 Minikube 在我的 Windows 10 机器上试验 Kubernetes。
我刚刚了解了所涉及的想法,但我不确定如何正确实施。到目前为止,我已经使用 Kompose 从现有的 docker-compose 文件创建了一组 yaml 文件。这已经成功了一半。
要将我的应用程序代码放入托管 PHP 的 pod 中,我一直在使用 hostPath 从我的本地计算机共享。我安装到 minikube 机器并从那里共享。我无法通过其他方式分享。应用程序代码托管在 github 存储库中。
我的问题是:
将我的应用程序代码安装到 pod 中(假设这类似于 docker 中发生的情况)是正确的方法吗?我不清楚从 docker hub 检索到的图像上究竟保存了哪些信息。尽管我已经阅读了将构建环境与您的机器隔离的容器。
这种方法如何转化为托管在云上的生产环境?我看到有各种存储类型。例如,我想尝试在 AWS 上进行部署,只是想看看这在实践中是如何工作的。
我真的在寻找指导,从在我的机器上工作的网络上找到的教程,到可以为托管在云上的客户做的事情。随着时间的推移,这可能会扩展到更微服务风格的架构。
解决方案
您描述的方法主要用于开发设置,您希望将代码作为卷安装到容器中,这样您就不必在每次代码更改时重新构建。通常使用 docker-compose 文件完成。
对于生产设置,您希望 docker 映像正确工作,并且只将卷安装到您想要持久的数据,通常数据库是核心示例。为此,EKS 已深度集成到 AWS 基础设施中,并将按需创建 EBS 卷。大多数情况下,您不需要配置任何卷,甚至不需要关心(除非您需要多个读写卷来进行扩展)。
对于 PHP 应用程序,您真的不应该在 pod 中保留任何数据,因为当您需要扩展应用程序时,它会产生其他问题。此外,管理需要持久化的文件的一个好方法是 S3(AWS 简单存储服务)。
所以一般来说,您需要为每个应用程序部署一个服务来访问该应用程序上的每个 pod,然后需要一个入口对象来将流量从互联网路由到每个 pod。
推荐阅读
- sql-server - SQL Server / 非确定性函数影响?
- matlab - 在 hex 文件中查找重复的字符串
- ruby-on-rails - Ruby on Rails 4 - 从模型缓存部分
- ruby-on-rails - Rails 控制器索引仅显示具有关联的对象
- go - 我们只能使用没有 volatile 的 RWMutex 吗?
- angular - filter.trim 不是函数
- typescript - 一对多关系不插入父级
- flask - 使用主管运行 (flask+) gunicorn 时出现问题:未指定应用程序模块
- json - 创建或更新索引时,“类型”未更新
- git - 由于结帐问题,由于 git 无法添加文件