我已经研究过k8s,但是我没有找到对一个不那么简单的设置的答案。
我有两个应用程序(2个容器)一起工作,但没有关系。
app1接收并过滤数据,然后发送给app2。
deployment;
1.1。(并不是两个容器都驻留在同一个POD中),因为它们不应该共享任何东西--通信发生在标准网络上。
1.2。每一个都可以独立地缩放-> Q1这种方法正确吗?
因此,我有两个部署对应于这两个应用程序。在deployment1.yaml和deployment2.yaml中定义。每一个都可以独立地使用kubectl scale进行缩放。
我的两个部署应该一起工作,因此,在规模方面,我想:
deployment1和deployment2-> Q2是否有一种使用k8s执行多部署规模的方法?
deployment1实例做一些事情,以便它知道deployment2存在的新实例(ip地址等.)。也就是说,我想用deployment2 ip向它发送一些请求。-> Q3是否有一种方法可以为after-successful-scale提供某种钩子来运行一些代码?例如: bash脚本?如果有-是谁负责的?主节点?一些init容器?
不管3.如何,我也希望deployment1在它启动时从某个地方提取它的配置。或者在启动时以某种方式将文件附加到它。
-> Q4是否有一种动态的方法?deployment1的第一个实例可能具有与第二个实例不同的配置。我知道我可能使用StatefulSets而不是部署,这样我就可以识别唯一的实例。
我想使用一些共享卷/ ConfigMap,这样所有实例都会用它们的实例号读取它们自己的唯一配置。但我也认为有一个更标准的方法来做,所以我问。
我想在web应用程序的琐碎设置中执行这些需求的方法是什么,并认为:
deployments自动缩放时,需要根据一定的触发。deployments都导出一个LoadBalancer,因此app1总是与app2的LoadBalancer对话--那么deployment1实际上是独立于deployment2的;scale和LoadBalancer都处理负载。-> Q5认为这对琐碎的情况是正确的吗?
发布于 2019-10-30 14:28:25
发布于 2019-10-23 19:35:26
对于q5:只需创建一个服务,让应用程序在kubernetes集群中交谈,该服务将处理负载平衡(每个请求)。您不需要LoadBalancer类型的服务并使应用程序使用外部IP。
q1-q4:您可以使用kubernetes API (可能还有客户端库)编写自己的操作符。有一个监视API,所以您的猫会自动通知与您的操作员相关的更改,因此您不必轮询。
发布于 2019-10-23 19:53:21
对于1& 2:您可以使用两个部署(A和B )和两个服务( svcA和svcB )来公开豆荚。这样,A就可以简单地使用'svcB‘这个名字来指B。
你真的需要知道是否创建了一个新的pod实例吗?因为如果有多个pod实例正在运行,那么服务svcB将充当负载均衡器,并在B的实例中分配负载。
对于存储配置,请使用ConfigMap,然后在您的部署中安装A和B。然而,这将为所有pods实例提供相同的配置。
如果您确实需要知道您使用的是哪个特定的吊舱,则可以使用有状态集而不是部署。主机名将包括pod id,因此您可以区分不同的实例。
https://stackoverflow.com/questions/58529727
复制相似问题