我试图了解如何在 Kubernetes 上部署应用程序,该应用程序要求同一部署的每个 Pod 在启动命令中使用不同的参数。
我有一个在 Kubernetes 上运行 Spark 的应用程序,需要在启动时生成执行器 Pod。问题是应用程序的每个 Pod 都需要使用自己的端口和 Spark 应用程序名称生成自己的执行器。
我已经阅读了有状态集并搜索了文档,但没有找到问题的解决方案。由于每个 Pod 都需要使用不同的端口,因此如果我理解正确的话,我需要在服务中声明该端口,并直接在 args 中作为参数传递给 pod 命令。
有没有一种方法可以在不使用多个部署(我需要创建的每个 Pod 一个)的情况下获得此信息?因为这是我能想到的唯一解决方案,但部署后无法扩展。 我使用 Helm 来部署应用程序,因此我可以根据需要轻松创建尽可能多的部署和/或服务,但我希望找到一个可以在运行时扩展的解决方案(如果可能的话)。
最佳答案
我认为您无法拥有一个从不同规范创建 POD 的部署。您无法在 Kubernetes 中使用它,Helm 也无济于事(因为 Helm 只是 Kubernetes 配置的模板管理器)。
你可以做的就是将每个 Pod 指定为单独的配置(如果是单个 Pod,则不一定需要 Deployment)并让 Helm 来管理它。
关于kubernetes - 在 Kubernetes 上部署可扩展的应用程序,这要求每个副本 Pod 具有不同的参数,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57635810/