以相同的方式为本地开发和测试和部署设置Kubernetes集群

时间:2018-01-12 08:07:03

标签: amazon-web-services docker kubernetes minikube google-kubernetes-engine

我对Kubernetes很陌生,所以对我的理解中的差距表示歉意,可能还有不正确的措辞。 我正在开发我的本地MacBook Pro,这在某种程度上是资源有限的。我的实际有效负载是一个数据库,它已经在Docker容器中运行,但显然需要某种持久存储。 各个容器还需要通过网络与每个容器进行通信,其中一些容器需要通向外部世界的通道(端口打开)。 我想为开发和测试目的设置一个Kubernetes集群,以后我可以轻松部署到裸机服务器或云供应商 - 谷歌和AWS。

从目前为止看起来它看起来我可以,例如使用minikube并在我已经运行的顶部VirtualBox上编排该集群。 那么它将如何映射到云中的实际部署? 我需要哪些额外的工具才能让它全部运行,特别是在持久存储和网络方面? 它会轻松映射到云端吗? 您建议使用哪种配置管理软件来维护所有配置?

3 个答案:

答案 0 :(得分:2)

一个很简短的答案是很难做到这一点。

我所知道的最佳选择之一是LinuxKit,它允许您构建相同的图像,您可以在任何流行的云提供商或您自己的数据中心或桌面管理程序上运行这些图像。事实上,这就是Docker for Mac的基础。

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

答案 1 :(得分:1)

通常,无论您启动群集的方法如何,都会获得或多或少相同的kubernetes。虽然与云相比,其他部署通常缺少云默认提供的内核云提供商。它涉及的一些非常重要的功能是开箱即用的支持LoadBalancer类型的服务或自动PersistentVolume配置。

如果您没有使用它们,或者为您的开发/测试环境另外配置它​​们,那么您应该没问题。

在PVC / PV的范围内,缺少自动PV配置器(除非您设置类似GlusterFS与Heketi支持此功能)将意味着您必须在dev / test集群上设置每个PV。与在云上以自动方式发生这种情况的能力相反。

此外,在您开始时,您的开发/测试设置和产品之间应该存在一些细微差别,因此您可能真的想要调查清单模板和管理解决方案,例如helm与kubernetes一起部署。我知道,当我开始做kube时,如果我自己这样做,那将会省去很多麻烦。

答案 2 :(得分:0)

关注您对数据库的查询,我认为您有两种选择(假设云仍然是您的选项):

  • 使用docker数据库映像并装入卷
  • aws
  • 的情况下使用RDS实例

我认为,对于数据库,通常不建议使用卷。

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

  • 在其中创建RDS实例及其所需的数据库
  • 将此RDS实例公开为Service类型ExternalName

我一直在做以下事情,到目前为止工作:

apiVersion: v1
kind: Service
metadata:
  name: my-database-service
  namespace: some-namespece
spec:
  type: ExternalName
  externalName: <my-rds-endpoint>

之后,您剩余的k8s个服务可以通过my-database-service

访问此服务

我认为这种方法在数据库方面更加一致并节省了数量。拼劲。

话虽如此,我承认指导方针是&#34;选择这个,如果你去云计算&#34;或者&#34;如果你在常旅行中&#34;还不太清楚。

到目前为止,我的经验表明: