多部署规模k8s

时间:2019-10-23 19:23:39

标签: kubernetes cloud microservices

我已经研究过k8s,但是找不到我没有完成的简单设置的答案。

我有2个应用程序(2个容器),它们可以一起工作但不相关。
app1接收并过滤数据,然后发送到app2

  1. 我已决定每个应用都有deployment
    1.1。 (并非两个容器都位于同一POD中),因为它们不应该共享任何内容-通信在标准网络上进行。
    1.2。每个人都可以独立扩展

-> 第一季度这种方法正确吗?

因此,我有2个对应于这2个应用程序的部署。在deployment1.yamldeployment2.yaml中定义。 每个人都可以使用kubectl scale独立扩展。

我的两个部署应该一起工作,因此如果要扩展,我想:

  1. 同时缩放deployment1deployment2

-> 第二季度是否可以使用k8s执行多部署规模?

  1. deployment1的新创建实例做一些事情,以便它知道存在deployment2的新实例(IP地址等)。即我想通过deployment2 ip向其发送一些请求。

-> 第三季度是否可以通过某种方式钩住after-successful-scale来运行某些代码?例如bash脚本?如果有-谁经营?主节点?一些初始化容器?

无论3.为何,我都希望deployment1在启动时从某个地方提取其配置。或者,在启动时以某种方式将文件附加到该文件。

-> 第四季度,有没有办法动态地做到这一点? deployment1的第一个实例可能与第二个实例具有不同的配置。我知道我可以使用StatefulSets而不是Deployments来识别唯一实例。
我想到了使用一些共享的卷/ ConfigMap,以便所有实例都将读取自己的唯一配置及其实例编号。但是我也认为有一种更标准的方法来做到这一点,所以我问。


我认为在琐碎的Web应用程序设置中满足这些要求的方法是什么,并认为:

  1. deployments都需要根据某些触发条件自动缩放。
  2. 两个deployments都导出一个LoadBalancer,因此app1总是与app2的LoadBalancer进行对话-这样deployment1实际上是独立于deployment2的; scale和LoadBalancer均可处理负载。

-> 第5季度,这种想法对微不足道的情况是否正确?

3 个答案:

答案 0 :(得分:2)

对于q5:仅创建一个服务,让应用程序在kubernetes集群内部进行对话,该服务将处理负载平衡(按请求)。您不需要LoadBalancer类型的服务,而使应用程序使用外部IP。

q1-q4:您可以使用kubernetes API(可能还有客户端库)编写自己的运算符。有一个watch API,因此您可以自动通知与操作员相关的更改,因此不必轮询。

答案 1 :(得分:1)

对于1和2:可以使用两个部署A和B,以及两个服务svcA和svcB来显示Pod。这样,A可以简单地使用名称“ svcB”来引用B。

您真的需要知道是否创建了pod的新实例吗?因为如果pod B有多个实例正在运行,则服务svcB将充当负载均衡器,并在B的实例之间分配负载。

要存储配置,请使用ConfigMap,并在部署中为A和B安装到configmap。但是,这将为您提供所有Pod实例的相同配置。

如果您确实需要知道您使用的是哪个特定容器,则可以使用有状态集而不是部署。主机名将包含Pod ID,以便您可以区分不同的实例。

答案 2 :(得分:0)

我看得越多,就越了解K8S并不能直接满足我的要求。

我正在实现VNF,所以我需要另一层抽象。
目前,我正在看OSM,乍看之下它似乎满足了我的需求。

我会在了解更多信息后尝试进行更新。

相关问题