Amazon web services 以相同的方式设置Kubernetes群集,用于本地开发、测试和部署

Amazon web services 以相同的方式设置Kubernetes群集,用于本地开发、测试和部署,amazon-web-services,docker,kubernetes,minikube,google-kubernetes-engine,Amazon Web Services,Docker,Kubernetes,Minikube,Google Kubernetes Engine,我对Kubernetes很陌生,因此我为自己理解上的差距和可能不正确的措辞道歉。 我正在开发本地的MacBookPro,这有点资源受限。我的实际负载是一个数据库,它已经在Docker容器中运行,但显然需要某种持久性存储。 单个容器还需要通过网络与每个容器通信,其中一些容器需要一个通向外部世界的通道(端口打开)。 我想为开发和测试目的建立一个Kubernetes集群,稍后可以轻松部署到裸机服务器或云供应商——Google和AWS 从目前为止的阅读来看,我似乎可以使用minikube,在我已经运行的

我对Kubernetes很陌生,因此我为自己理解上的差距和可能不正确的措辞道歉。 我正在开发本地的MacBookPro,这有点资源受限。我的实际负载是一个数据库,它已经在Docker容器中运行,但显然需要某种持久性存储。 单个容器还需要通过网络与每个容器通信,其中一些容器需要一个通向外部世界的通道(端口打开)。 我想为开发和测试目的建立一个Kubernetes集群,稍后可以轻松部署到裸机服务器或云供应商——Google和AWS

从目前为止的阅读来看,我似乎可以使用minikube,在我已经运行的VirtualBox上协调集群。 那么,这将如何映射到云中的实际部署? 我还需要哪些额外的工具才能使其全部运行,特别是在持久性存储和网络方面? 它能很容易地映射到云吗?
您建议使用什么配置管理软件来维护所有这些配置?

通常,无论使用何种方法启动集群,您都会得到大致相同的kubernetes。不过,与云相比,其他部署通常缺少云默认情况下kubes内置云提供商提供的功能。它涉及到的一些非常重要的特性是对LoadBalancer类型的服务的开箱即用支持或自动PersistentVolume资源调配

如果您可以不使用它们,或者为您的dev/test环境另外配置它们,那么您应该很好

在PVC/PV范围内,缺少自动PV provisioner(除非您使用Heketi设置了类似ie.GlusterFS的东西来支持这一点),这意味着您必须在开发/测试集群上手动提供每一个PV,这与在云上以自动方式发生的能力相反


此外,在开始时,您的开发/测试设置和产品之间应该有一些细微的差异,因此您可能真的希望从部署到kubernetes的第一天开始研究清单模板和管理解决方案,如
helm
。我知道,如果我在开始学习kube时自己这么做的话,我会省去很多麻烦。

专注于你对数据库的查询,我认为你有两个选择(假设云仍然是你的选择)):

  • 使用docker数据库映像和装载卷
  • 在aws
    aws
我认为,对于数据库,通常不建议使用卷

我建议你做的是(一旦你掌握了一些基本概念,主要是
Service
s,就可以

  • 创建一个RDS实例以及其中所需的数据库
  • 将此RDS实例公开为
    服务
    类型
    外部名称
我一直在做以下工作,目前正在工作:

apiVersion: v1
kind: Service
metadata:
  name: my-database-service
  namespace: some-namespece
spec:
  type: ExternalName
  externalName: <my-rds-endpoint>
apiVersion:v1 种类:服务 元数据: 名称:我的数据库服务 名称空间:一些名称空间 规格: 类型:ExternalName 外部名称: 之后,其余的
k8s
服务可以通过
my database service

我认为这种方法在数据库方面更加一致,并节省了大量的时间

尽管如此,我承认“如果你选择云计算,请选择此项”或“如果你选择prem,请选择此项”的指导方针还不太清楚

我迄今的经验表明:

  • 对于on-prem(不仅仅是您的本地主机),最有可能的方法是
  • 到目前为止,对于aws,我一直有一个愉快的经历
  • 还有一个规范的解决方案似乎使用了一个堆栈(/)来帮助部署,他们声称这两个堆栈都适合cloud/on prem(根本没有尝试过)

    • 一个非常简短的答案是,很难正确地做到这一点

      我所知道的最好的选择之一是,它允许您构建相同的映像,您可以在任何流行的云提供商或您自己的数据中心或桌面虚拟机监控程序上运行。事实上,Docker for Mac就是基于此



      免责声明:我是LinuxKit的贡献者之一。

      这对以后的测试/登台很有用,但在开发中,我希望避免向云提供商支付账单-还有数据隐私方面的考虑,这使得在第三方硬件上启动不容易。最后,RDS对于我们的工作负载来说性能不佳,因此感谢您提供有用的通信ent,但我可能不会朝这个方向走。这里只是添加一些上下文:我问这个问题的原因是:我希望容器和它们的编排工具能够使部署和从开发到登台再到生产变得更容易。到目前为止,我还没有看到这一点。谢谢,我想这是我担心的答案我认为生态系统需要成熟,并在理想情况下为我的用例简化一点。我不能相信一个拜占庭式的助手程序系统正在运行,仅仅为了解决一个“编排”问题。假设它们都完美地协同工作,并且都100%没有bug,那将是天真的。