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

kubernetes - 状态集的就绪探测,而不是单个 pod/容器

我一直在阅读有关kubernetes 中的 liveness 和 readiness 探针的信息,我想用它们来检查集群是否已经活跃起来。

问题是如何为整个 statefulset 而不是单个 pod/container 配置就绪探测。

可以使用简单的 HTTP 检查来确定准备情况,但我遇到的问题是 readinessCheck 似乎适用于容器/pod 而不是集合本身。

对于我正在使用的软件,HTTP 端点在集群形成之前不会出现;这意味着每个单独的 pod 都将无法通过 readinessCheck,直到所有三个都启动并找到另一个。

我现在在 Kubernetes 中看到的行为是创建了 3 个副本中的第一个,并且 Kubernetes 甚至不会尝试创建副本 2 和 3,直到第一个通过 readinessCheck,这永远不会发生,因为所有三个都必须启动让它有机会通过它。

0 投票
1 回答
18779 浏览

kubernetes - Pod 有未绑定的 PersistentVolumeClaims 但卷声明是有界的

我想在 virtualbox 上的 kubernetes 中创建一个 statefulset elasticsearch。我没有使用云提供商,所以我为我的 statefulset 的两个副本创建了两个本地持久卷:

pv0:

pv1:

状态集:

似乎持久卷已正确反弹,但 pod 始终处于崩溃循环并每次都重新启动。是因为使用了 initContainer 还是我的 yaml 有问题?

有状态集

光伏,聚氯乙烯

0 投票
1 回答
3961 浏览

kubernetes - 如何更新 StatefulSet 中的环境变量

我想更新 Kubernetes StatefulSet 中的环境变量。我更新了 YAML 文件并执行了$kubectl apply -f my-statefulset.yml,但没有任何改变。然后我尝试$kubectl scale sts my-statefulset --replicas=0; kubectl scale sts my-statefulset --replicas=4了,它只重新创建了 StatefulSet 中的最后一个 pod。

删除我的整个 StatefulSet 并重新创建它只是为了更改环境变量看起来不是一个好主意。$kubectl patch可以在这里工作,但我无法形成更新 json。我需要一些关于如何更新 StatefulSet 中的环境变量的帮助。

0 投票
3 回答
9663 浏览

mysql - 具有root密码的Kubernetes mysql statefulset

我按照这里的示例https://kubernetes.io/docs/tasks/run-application/run-replicated-stateful-application/在 kubernetes 中创建了一个 3 副本 mysql statefulset,一切正常。

但是,在我添加 root 密码并修改部署 yaml 以包含密码后,mysql-1 总是失败。

这是我添加密码的方法:

  1. 我创造了一个秘密mysql-root-pass
  2. 我删除并用read from the secretMYSQL_ALLOW_EMPTY_PASSWORD替换它MYSQL_ROOT_PASSWORD
  3. 添加-p$MYSQL_ROOT_PASSWORD到 yaml 文件中调用 mysql 的所有位置。
  4. 尽管如此,mysql-0 已创建并运行,但 mysql-1 崩溃了:

mysql-1 0/2 Init:CrashLoopBackOff

任何人都有一个关于如何添加密码的工作示例?

编辑:添加 yaml 文件

0 投票
2 回答
1748 浏览

docker - 将持久卷声明添加到容器中的现有文件

在我的 docker 映像中,我有一个/opt/myapp/etc包含一些文件和目录的目录。我想为我的应用创建 statefulset。在那个 statefulset 中,我正在创建持久卷声明并附加到/opt/myapp/etc. Statefulsetyaml附在下面。谁能告诉我在这种情况下如何将卷附加到容器?

这是描述 pod 的输出

存储类定义

0 投票
1 回答
1612 浏览

docker - activemq 状态集 kubernetes pod 启动失败

我有这个奇怪的错误困扰着我。

我试图让一个 activemq pod 运行一个 kubernetes 有状态集,附加卷。

activemq 只是一个普通的旧 vanila docker 映像,从这里挑选出来https://hub.docker.com/r/rmohr/activemq/

如果我们不使用有状态集定义 kubernete activemq pod,它运行良好。

以下是规格

0 投票
1 回答
63 浏览

kubernetes - 基于副本的 Kubernetes 容器亲和性?

我有一个有 10 个副本的 StatefulSet,每个副本都有数百 GB 的数据。

我想在 10 个副本中的 1 个上对对象存储(例如 S3)运行备份命令。(因此可以在 initContainer 步骤中加载数据)

是否可以使用基于副本 ID 的亲和性来调度容器?或者是否可以从环境变量中检索副本 ID?

0 投票
2 回答
2008 浏览

kubernetes - 是否可以将整数锚转换或转换为 yaml 文件中的字符串别名?

对于我的 AKS 容器设置,我想通过环境变量将给定 statefulset 的请求数量的副本传递给每个 pod。

我试图在不重复自己的情况下做到这一点(一次是在“副本”设置中,一次是在环境变量的设置中)。

我能找到的唯一真正的解决方案是使用锚和别名(基于Kubernetes StatefulSet - 获取 spec.replicas 元数据并在配置中的其他位置引用):

不幸的是,“env”值似乎必须是一个字符串,并且“replicas”的整数值不会被转换或转换。而是引发以下错误:

v1.EnvVar.v1.EnvVar.Value: ReadString: 需要 " 或 n,但找到了 3,在 ...|,"value":3},{"name":|...的#10 字节中发现错误更大的上下文 ...|:"solr-config"}}},{"name":"N_O_REPLICAS","value":3},

我尝试通过编写手动转换为字符串:

但这也不起作用并引发以下错误:

将 YAML 转换为 JSON 时出错:yaml:第 52 行:未找到预期的密钥

有没有办法创建一个允许将整数值作为字符串重用的 Kubernetes YAML 文件?或者对于这种特殊情况有其他解决方案吗?

0 投票
1 回答
2624 浏览

kubernetes - 向 statefulSet 添加额外的 volumeClaimTemplate

我们正在使用 Kubernetes 1.10.1

我有一个 statefulset,它附加了一个 volumeClaim。

我想添加一个额外的 volumeClaim,因为调整现有 PV 的大小仍处于测试阶段,并且在 Kubernetes 1.10 中也不可用。

我的更改基本上只是添加了一个额外的 PVC(当然还要安装它,这里没有提到):

结果我得到一个错误:

Error: UPGRADE FAILED: StatefulSet.apps "my-app" is invalid: spec: Forbidden: updates to statefulset spec for fields other than 'replicas', 'template', and 'updateStrategy' are forbidden.

只要不触及现有的 PVC,至少不应该支持添加额外的 PVC 吗?我在这里错过了什么吗?我在文档中没有找到与此相关的任何内容。

0 投票
1 回答
3448 浏览

kubernetes - 无法通过 minikube 上的主机名 ping 其他 pod

我有一个有两个副本的 statefulSet。它的无头服务名称是“gov-svc” 它是->

  1. .metadata.name:sts
  2. .metadata.namespace:默认
  3. .spec.serviceName: gov-svc
  4. .spec.template.spec.subdomain: gov-svc
  5. .spec.replicas: 2

在运行 statefulSet 之前

在从 pod 运行这个 statefulSet 的两个 podsts-0之后,ping结果:

但是当我尝试ping sts-1from时sts-0,它说:

我需要通过主机名成功 ping 其他 pod。我该怎么做?