问题标签 [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 投票
1 回答
773 浏览

kubernetes - AWS 中使用 Pod 自动缩放的 Kubernetes PersistentVolumeClaim 问题

我们已经根据我们的项目要求成功地创建了 Pod、服务和复制控制器。现在我们计划使用 Kubernetes 在 AWS 中设置持久性存储。我已经创建了 YAML 文件以在 AWS 中创建 EBS 卷,它按预期工作正常。我能够声明卷并成功安装到我的 pod(这仅适用于单个副本)。

我能够成功创建文件。卷也在创建,但我的 Pod 将进入挂起状态,卷仍然在 aws 中显示可用状态。我在那里看不到任何错误日志。

存储文件:

主文件:

现在我打算设置一个 pod Autoscaling。我已经看到了用于部署和 ReplicationContoller 的 pod 自动缩放。我可以知道我们也可以为有状态集实现 pod 自动缩放吗?

0 投票
2 回答
1376 浏览

kubernetes - Kubernetes StatefulSet - 获取 spec.replicas 元数据并在配置中的其他地方引用

我正在配置一个 StatefulSet,我希望其中的副本数量(如下所示的spec.replicas)可以以某种方式作为参数传递到应用程序实例中。我的应用程序需要spec.replicas来确定副本的数量,以便它知道要从 MySQL 表中加载哪些行。我不想在spec.replicas和 application 参数中硬编码副本的数量,因为在向上或向下缩放副本数量时这将不起作用,因为在缩放时需要调整 application 参数。

这是我的 StatefulSet 配置:

我已经阅读了 Kubernetes 文档,并且spec.replicas字段的范围是 pod 或容器级别,而不是 StatefulSet,至少就我所见而言。

提前致谢。

0 投票
1 回答
544 浏览

kubernetes - Kubernetes StatefulSet pod 启动错误恢复

如果您在 StatefulSet 规范中修补镜像名称,Kubernetes StatefulSet (v1.8) 将自动将其管理的 pod 滚动到新镜像——毕竟,编排这种更新是它的主要工作之一。但是,如果在镜像拉取步骤中部署修改后的镜像失败(例如,镜像名称中有错字,所以没有要拉取的镜像),它尝试使用新镜像重新启动的第一个 pod 会卡在ImagePullBackOff 状态和翻转停止。没关系,这几乎是您想要和期望的。但是,如果您随后再次修补 StatefulSet 规范以纠正错误,则该 set 不会被修复 - 它只是处于损坏状态 - 直到您(手动)删除失败的 pod,此时一切都按原样进行一切都恢复到健康状态。

我认为应该有一种配置方法,以便在更新映像名称时自动进行这种恢复,就像正常部署一样,而不是需要手动干预(尤其是因为这是针对 CI-类型应用程序,无论如何这一切都需要自动化)。我不禁觉得我只是没有在文档中找到正确的选项,但是仔细研究文档并进行无休止的 Google 搜索并没有发现成功的秘诀。有没有办法将这种恢复配置为自动发生,如果是这样,它是什么?

如果做不到这一点,是否有一种优雅的方法可以自动检测故障状态以触发对故障 pod 的脚本删除?我尝试过的一切似乎都很笨拙,有很多轮询和临时超时,所以我很难相信这是正确的做法。

0 投票
1 回答
9499 浏览

kubernetes - 如何在现有 NFS 共享上指定 mountOptions

我们正在创建一个 kubernetes statefulset,它正在安装一个预先存在的 NFS 共享。

这是一个精简的示例:

这工作正常,并且 nfs 卷已正确安装到容器中。但是如何在挂载上指定挂载选项?我尝试设置 mountOptions 参数,如下所示: https ://kubernetes.io/docs/concepts/storage/persistent-volumes/#mount-options

在卷和 volumeMount 上,它无法验证。我不需要(或不想)创建 PV 或 PVC,因为 nfs 卷已经存在于 k8s 之外,我只需要使用它。

无论如何要指定安装选项吗?

0 投票
1 回答
48 浏览

kubernetes - 使用 Kubernetes 部署多个 wordpress 实例

我缺少 Kubernetes 中用于水平扩展“独立”应用程序的功能(您可以将一个应用程序分配给一个用户)。

我想用 kubernetes 部署几个 Wordpress 实例。每个实例都应该有自己的环境和数据,并分配给一个用户。

一开始我想到了Statefullset,但问题是当你删除一个pod时,你必须以相反的顺序或全部并行删除它。如果第三个用户取消服务并且你只想删除第三个pod怎么办?!

部署?然后我必须为每个用户创建一个独特的 Pod,每个用户都有自己的卷!?Kubernetes 的附加值在哪里..

你还有其他更好的主意吗?

问候,

0 投票
2 回答
11674 浏览

kubernetes - 有没有办法在 kubernetes statefulset 配置文件中获取 pod 的序数索引?

我们在 Kubernetes 1.9.0 上,想知道是否有办法在其 statefulset 配置文件中访问 pod 的“序数索引”。我们喜欢动态地为 pod 的标签分配一个值(从序数索引派生),然后在规范下使用它来设置 pod 亲和性(或反亲和性)。

或者,在 statefulset 配置文件中是否可以使用 pod 的实例名称?如果是这样,我们可以希望从中提取序数索引并动态分配给标签(供以后用于亲和力)。

0 投票
1 回答
8573 浏览

redis - statefulset 和 headless service 是如何工作的-K8s

我明白

  • StatefulSet- 管理/维护稳定的主机名、网络 ID 和持久存储。
  • HeadlessService- 稳定的网络 ID,您需要为有状态应用程序定义无头服务

来自 K8s Docs -> 有时您不需要或不想要负载平衡和单个服务 IP。在这种情况下,您可以通过为集群 IP (.spec.clusterIP) 指定“无”来创建“无头”服务。

我对“有状态与无状态”应用程序/组件的看法

  1. UI属于无状态应用程序/组件,因为它不维护任何数据。但它来自数据库并显示

  2. DB, Cache(Redis) 是有状态的应用程序/组件,因为它必须维护数据

我的问题。

  1. Persistence storage in Apps- 为什么我应该考虑将postgress(例如)部署为StatefulSet?我可以定义PVs 和PVCinDeployement来将数据存储在 PV 中。即使 Pod 重新启动,它也会获得 PV,因此不会丢失数据。

  2. Network- Redis(例如)应该部署为StatefulSet,这样我们每次都可以获得唯一的“网络 ID”/名称,即使在重新启动 pod 后也是如此。例如; Redis-0Redis-1StatefulSet,我可以定义Redis-0为大师,所以大师name永远不会改变。现在我为什么要考虑Headless Service应用StatefulSet程序?我可以直接访问/连接 POD 本身,对吗?有什么用Headless Service

  3. 我听说过Operators,管理应用程序的最佳方式StatefulSet。我在下面找到了一些例子。为什么这些(或其他)对于部署为StatefulSet. 例如,PrometheusElasticSearch;我可以定义PVsPVC存储数据而不会丢失。

我为什么/什么时候应该关心StatefulSetand Headless Serivice

0 投票
1 回答
2541 浏览

kubernetes - 当节点死亡/重新启动并具有 PersistentVolume 时的 StatefulSet 行为

假设我有一个资源 foo,它是一个有 3 个副本的 statefulset。每个都提出一个持久的卷声明。

一个 foo pod (foo-1) 死掉了,一个新的 pod 在它的位置开始。foo-1 是否会绑定到与前一个 foo-1 死前相同的持久卷?持续数量声明的数量会保持不变还是会增长?

这种极端情况似乎不在 StatefulSets 的文档中。

0 投票
1 回答
318 浏览

kubernetes - 如何从 StatefulSet 中选择具体 Pod 并将其分配给具体 Node

美好的一天,kubernetesStatefulSet是否有将具体 Pod 设置为具体节点的选项。

例如:我们有3 个带有唯一标签 ( , , )的StatefulSet副本和 3 个带有标签 ( , , ) 的副本。如何从带有标签的 Pod 指向带有标签的节点?在 StatefulSet、PodAffinity 和 NodeAffifnity 的官方文档中,我没有找到如何执行此操作的任何信息。Podapp-0app-1app-2Nodenode-0node-1node-2StatefulSetapp-0node-0

有什么建议么

0 投票
0 回答
148 浏览

kubernetes - 如何在 Kubernetes StatefulSet 中运行零停机应用程序

我想在 Kubernetes 中运行一个有状态的应用程序(对特定文件夹执行读/写操作),而不需要单个实例依赖。

  1. 我可以使用 statefulset 来满足这个要求吗?
  2. 是否需要使用共享文件系统(例如:GFS、EFS...)?
  3. 如果是,它是否会影响我的应用程序的性能。