问题标签 [statefulset]

For questions regarding programming in ECMAScript (JavaScript/JS) and its various dialects/implementations (excluding ActionScript). Note JavaScript is NOT the same as Java! Please include all relevant tags on your question; e.g., [node.js], [jquery], [json], [reactjs], [angular], [ember.js], [vue.js], [typescript], [svelte], etc.

0 投票
3 回答
367 浏览

kubernetes - 在 Kubernetes 上部署一个可扩展的应用程序,这需要每个副本 Pod 具有不同的参数

我试图了解如何在 Kubernetes 上部署应用程序,这需要相同部署的每个 Pod 具有与启动命令一起使用的不同参数。

我有这个在 Kubernetes 上运行 spark 的应用程序,需要在启动时生成执行器 Pod。问题是应用程序的每个 Pod 都需要使用自己的端口和 spark 应用程序名称生成自己的执行程序。

我已经阅读了有状态集并搜索了文档,但我没有找到解决问题的方法。由于每个 Pod 都需要使用不同的端口,如果我理解正确,我需要在服务中声明该端口,并且还直接作为参数传递给 args 中的 pod 命令。

有没有办法在不使用多个部署的情况下获得这个,一个用于我需要创建的每个 pod?因为这是我能想到的唯一解决方案,但部署后无法扩展。我正在使用 Helm 来部署应用程序,因此我可以根据需要轻松创建尽可能多的部署和/或服务,但如果可能的话,我想找到一个可以在运行时扩展的解决方案。

0 投票
1 回答
333 浏览

operator-keyword - 删除prometheus stateful set 重新创建自己

我已经使用 helm 图表部署了 prometheus-operator,我需要自定义 Prometheus 有状态集但由于有状态集的性质而无法做到。我必须通过“kubectl delete sts prometheus-monitoring-prometheus-oper-Prometheus --cascade=false”删除有状态,但奇怪的是它自己重新创建了有状态集。

由于这个问题,我无法更新我的有状态集。

请帮助,如何解决这个问题。

0 投票
2 回答
643 浏览

kubernetes - 有没有办法只增加 statefulset 的副本而不减少副本?

我不想减少 StatefulSet 控制的 pod 数量,并且我认为减少 pod 是生产环境中的危险操作。

所以...,有什么办法吗?谢谢~

0 投票
0 回答
70 浏览

kubernetes - Kubernetes:如何访问 Pod 内的负载均衡器 externalIP

我有一个用例,我必须使用 Kubernetes Statefulset 部署分布式数据库。我想从集群外部访问所有 Pod。有几种方法可以做到这一点,其中之一是为每个 Pod 创建负载均衡器服务。现在我想在 Pod 中注入负载均衡器的这个外部 PublicIP(一些数据库相关的配置文件需要这个信息)。

我试图检查 Pod 内是否有任何可以包含此类信息的 ENV var。有一些与服务相关的 ENV 变量,但它们不告诉 externalIP。它们只显示内部服务 IP。有什么建议可以在 Pod 中获取这个 externalIP?

0 投票
3 回答
1080 浏览

docker - Kubernetes 多个具有不同配置的相同应用程序和数据库部署

困境:使用相同的 docker 映像和代码部署多个应用程序和数据库容器对,但配置不同(使用子域的不同客户端)。

有什么合乎逻辑的方法来解决这个问题,因为 kubernetes 似乎没有支持这种设置的集成?

可能的方法

  1. 对所有应用部署使用单一应用服务,对所有数据库部署使用单一数据库服务。运行单个 Nginx 静态文件服务和部署,它将从在应用程序部署之间共享的静态卷中提供静态文件(都使用同一组静态文件)。每当需要新的部署时,让 bash 脚本复制应用程序和数据库的 .yaml 部署文件,并将 sed 文本替换为客户端的名称,并指向正确的 configmap(当然是手动编写的)并 kubectl 应用它们。一个主要的 nginx 入口将处理传入的流量并通过应用程序部署服务指向正确的 pod
  2. 与上面类似,除了使用 StatefulSet 而不是单独的部署,以及使用 init 容器将不同的配置复制到挂载的卷(唯一的缺点是您不能删除 statefulset 中间的项目,如果您不再需要,就会出现这种情况客户端的特定容器,这似乎是一种非常hacky的方法)。

理想情况下,如果 StatefulSet 可以使用向下 api 根据可以解决问题的有状态集的索引动态选择配置映射名称(您基本上可以使用名称中的索引手动制作配置文件,并且它将被选中适当)。就像是:

但是,kubernetes 中没有该功能。

0 投票
1 回答
2019 浏览

kubernetes - 如何将秘密挂载到 Kubernetes StatefulSet

因此,查看 Kubernetes API 文档:https ://kubernetes.io/docs/reference/generated/kubernetes-api/v1.17/#statefulsetspec-v1-apps看来我确实可以拥有一个卷,因为它使用podspec 和 podspec 确实有一个卷字段,所以我可以列出秘密,然后像在部署或任何其他 pod 中一样安装它。

问题是 kubernetes 似乎认为卷实际上不在 StatefulSet 的 podspec 中?这是正确的吗?如果这是真的,我如何将秘密挂载到我的 statefulset 中。

错误:error validating "mysql-stateful-set.yaml": error validating data: ValidationError(StatefulSet.spec.template.spec.containers[0]): unknown field "volumes" in io.k8s.api.core.v1.Container; if you choose to ignore these errors, turn validation off with --validate=false

有状态集:

0 投票
2 回答
633 浏览

kubernetes - 立即将 Kubernetes Statefulset/Deployment 扩展到最大容量

目前,我们将其中一个 statefulset 扩展为拥有 11 个副本。我们当前的 updateStrategy 是

如果我们从头开始部署 statefulset,Kubernetes 会一个接一个地启动它们。要启动一个副本,它需要大约 5 分钟。因此,我们总共等待 55 分钟来填满容量。

从头开始有没有办法一次填满容量?那么所有 11 个副本将同时启动?

由于故障安全,应通过 RollingUpdate 处理现有 statefulset 的升级。

最好的祝愿,斯蒂芬

0 投票
2 回答
180 浏览

kubernetes - 如何使用命名空间在 Kubernetes 的 Statefulset POD 中打开 shell

当涉及到 PODS 时:

该命令具有以下格式:

当我确实使用以下方式定义 POD 时,我不确定如何完成相同的操作:

0 投票
1 回答
95 浏览

kubernetes - Kubernetes StatefulSets - 在每个工作节点上运行 pod

作为 StatefulSet 的一部分,在每个可用工作节点上运行单个 Pod 的最简单方法是什么?所以,一对一的映射。

我是否可以说每个 Pod 默认使用 StatefulSet 在不同的节点上运行?在哪种情况下,将 x 个 pod 添加到集群中存在 x 个 Worker 节点的 SS 就足够了?

谢谢。

0 投票
1 回答
867 浏览

azure - 在 statefulset 中重新启动 pod 时创建一个新卷

我正在使用 azure aks 使用 azure 磁盘配置程序创建带有卷的 statefulset。我正在尝试找到一种方法来编写我的statefulset YAML 文件,当 pod 重新启动时,它将获得一个新的,而旧的卷将被删除。

我知道我可以手动删除卷,但是有什么方法可以告诉 Kubernetes 通过 statefulset yaml 执行此操作?

这是我的 Yaml: