问题标签 [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 回答
445 浏览

kubernetes - 应该使用什么来在其 pod 之间共享 StatefulSet 的卷:NFS 或 etcd?

我想部署一个高性能(多节点)数据库。为此,将使用 StatefulSet。那么,StatefulSet 应用程序的 Pod 之间应该使用什么来共享数据库的内容呢?NFS可以做这项工作吗?还是etcd

谢谢,

0 投票
2 回答
6269 浏览

kubernetes - Kubernetes:带有 StatefulSets 的 NFS

我正在尝试将现有 NFS 与 StateFulSets 一起使用。

使用. PresistentVolumeClaim_volumeClaimTemplates

问题:

但是,由于PresistentVolumeClaim声称整个PresistentVolume. 我必须PresistentVolume为所有副本手动创建。有没有办法在 Kubernetes 中动态配置 NFS 持久卷?

注意: NFS Server 本身是静态的,只需要在 K8s 中动态创建卷,而不是 NFS Server 本身。

我正在使用 mongo statefulset 示例:

它需要 3 PresistentVolumeClaim,所以我必须创建 3PV才能使用。这可以像其他动态供应商(如 aws-ebs)一样动态添加到 NFS 中吗

这是获得带有 NFS 持久卷的 StatefulSet 的正确方法吗?

0 投票
1 回答
2187 浏览

kubernetes - Kubernetes:使用 volumeClaimTemplate 选择管理员配置的 PersistentVolume

我自己创建了一些持久卷。是否可以volumeClaimTemplates在我的有状态集中选择那些?似乎它总是会提供新的持久卷,而不是使用现有的。

Kubernetes:1.5

0 投票
2 回答
727 浏览

kubernetes - Kubernetes statefulset 以完成状态结束

我在 Google GKE 上运行一个 k8s 集群,我有一个运行 Redis 和 ElasticSearch 的状态集。因此,Pod 时不时地以完成状态结束,因此它们不再运行,我的服务依赖于它失败。这些 pod 也永远不会自行重启,一个简单kubectl delete pod x的方法可以解决问题,但我希望我的 pod 能够自行修复。我正在运行可用的最新版本 1.6.4,我不知道为什么它们没有像任何其他常规 pod 一样被拾取和重新启动。也许我错过了一些明显的东西。

编辑:我还注意到吊舱收到终止信号并正常关闭,所以我想知道这是从哪里来的。我没有手动关闭,我对 ElasticSearch 也有同样的体验

这是我的 statefulset 资源声明:

0 投票
2 回答
689 浏览

networking - Kubernetes:仅公开 StatefulSet 的单个 pod

对于 StateFul 集,我可以通过内部无头服务访问其 pod。

我认为,有一种简单的方法在外部公开单个 pod 是有道理的(因为 pod 通常有一个状态,因此对它们进行负载平衡是没有意义的)。

到目前为止,我没有找到直接的方法来做到这一点。即使做kubectl expose pod pod-1 --type NodePort也给了我一个平衡所有 pod 的服务。是否有这样的原因,或者是否有访问单个 pod 的好方法。

0 投票
2 回答
2023 浏览

mongodb - 我可以在 Kubernetes Statefulset 的 volumeClaimTemplate 中使用现有的 GCE 永久磁盘吗

我正在使用 Google Container Engine 为 MongoDB 副本集(3 个副本 pod)运行 StatefulSet。

这适用于持久存储的动态配置——即在创建有状态集时为每个 pod 配置新存储。

但是,如果我重新启动 StatefulSet,我似乎无法重新绑定旧的持久卷,因为将再次配置新的存储。这意味着数据丢失。理想情况下,持久性存储应该在 Kubernetes 集群本身被删除后仍然存在,数据会保留下来并准备好在新集群中再次使用。

有没有办法创建 GCE 持久磁盘并在 StatefulSet 的持久卷声明中使用它们?

[2017 年 9 月 20 日更新]

找到答案: 这就是解决方案(归功于@RahulKrishnan RA)

  1. 创建一个存储类,指定底层磁盘类型和区域

  2. 创建一个 PersistentVolume 指定上面创建的存储类,并引用您要挂载的永久磁盘

  3. 创建一个 PersistentVolumeClaim。命名 PVC 很重要<pvc template name>-<statefulset name>-<ordinal number>。(正确的名称是诀窍!)将volumeName指定为上面创建的PV和存储类。
  4. 创建与具有正确名称的副本一样多的 PV 和 PVC。
  5. 使用 PVC 模板创建 statefulSet。
0 投票
0 回答
599 浏览

kubernetes - 路由到 Openshift/Kubernetes 中状态集的给定副本

您是否知道 kubernetes/openshift 中的 statefulset 功能是否有办法为每个副本创建 1 个路由(即 1 个路由将允许我从外部访问我的 statefulset 的 1 个特定副本)。

上下文如下。

我目前正在尝试通过 statefulsets 在 Openshift 中以 HA 模式部署 spark master。
我的 statefulset“spark”“链接”到无头服务“spark”。

当我保持在集群间通信的服务级别时,一切正常。

我是说:

  • 我有 n 个名为“spark-0”、“spark-1”、....、“spark-n”的 pod
  • 所有这些 POD 都可以在我的 openshift 集群中通过 DNS 名称“spark-0.spark”、“spar-1.spark”、....、“spark-n.spark”进行访问

我遇到的问题是当我开始创建路线以使它们可以从外部访问时。
例如,我可以轻松地创建一个路由“spark-route”,该路由将“链接”到端口 8080 上的“spark”服务。
通过这样做,我将有 1 条路由将负载平衡到我的“n”个 pod。

但我想要的是拥有 n 条路线(spark-route-1,...,spark-route-n),每条路线都重定向到我的 statefulsets 中的特定副本。
事实上,从外部,我需要明确地看到 spark-1、spark-2、...、spark-n 的 web ui。
在这种情况下,我不想让我的请求负载平衡。

0 投票
1 回答
9077 浏览

kubernetes - Kubernetes 节点亲和性和状态集

我正在寻找使用亲和力创建一个有状态集。我为我的 3 个节点添加了一个标签。其中两个有area=area1,一个节点有area=area2。我希望仅在 area=area1 的节点上运行我的 statefulset pod。它不工作。我从调度程序收到一个错误,即没有匹配的节点。我正在运行 Kubernetes v1.7.4

yaml:

0 投票
2 回答
1210 浏览

kubernetes - 配置 Kubernetes StatefulSet 启动 Pod 先启动失败的容器再启动?

基本信息

嗨,我遇到了 Kubernetes StatefulSets 的问题。我正在尝试用 3 个副本启动一个集合。这些副本/pod 都有一个容器,该容器根据它们的 network-id ping 其他 pod 中的容器。容器需要来自所有pod 的响应。如果它没有得到响应,容器将失败。在我的情况下,我需要 3 个 pod/副本才能使我的设置正常工作。

问题描述

会发生以下情况。Kubernetes 启动 2 个 pod 的速度相当快。但是,由于我需要 3 个 pod 来构建功能齐全的集群,因此前 2 个 pod 不断崩溃,因为第 3 个还没有启动。出于某种原因,Kubernetes 选择继续重新启动两个 Pod,而不是添加第三个 Pod,这样我的集群才能正常运行。

我看到我的设置在大约 15 分钟后运行正常,因为 Kubernetes 那时添加了第三个 pod。

问题

所以,我的问题。

有谁知道在启动所需数量的 Pod/副本之前延迟重新启动失败容器的方法?

0 投票
1 回答
2128 浏览

postgresql - Kubernetes Helm Chart - 调试

我找不到描述这些错误的好信息:

我还是 Helm 的新手;我已经构建了两个与此模板相似的工作图表并且没有这些错误,即使代码没有太大不同。我在想可能存在某种我没有注意到的格式错误。要么是那个,要么是由于不同的类型(其他的是 Pod,这是 StatefulSet)。

它引用的 YAML 文件在这里:

是否有人能够 a) 指出正确的方向,以了解如何实现 spec.template 和 spec.serviceName 必填字段,b) 了解为什么字段“容器”无效,和/或 c) 提及任何可以帮助调试 Helm 图表的工具?我尝试了 'helm lint' 和 '--debug' 标志,但 'helm lint' 没有显示错误,并且标志输出显示了上面的错误。

错误是否也可能来自不同的文件?