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

kubernetes - 如何在 Kubernetes 集群中使用现有的 statefulset 运行 pod?

我使用这个命令来启动我的 statefulset:

但是 pod 没有运行。

如何使用现有的状态集“my-set”启动 pod?

0 投票
1 回答
1804 浏览

kubernetes - 如何为 statefulset 无头服务获取 SRV DNS 地址

dns 查找 statefulsets srv 记录中的问题

我的 yaml 文件

$ Kubectl 集群信息

Kubernetes master 运行在https://192.168.99.100:8443 KubeDNS 运行在https://192.168.99.100:8443/api/v1/namespaces/kube-system/services/kube-dns:dns/proxy

$ kubectl 版本

客户端版本:version.Info{Major:"1", Minor:"13", GitVersion:"v1.13.3", GitCommit:"721bfa751924da8d1680787490c54b9179b1fed0", GitTreeState:"clean", BuildDate:"2019-02-01T20:08: 12Z", GoVersion:"go1.11.5", Compiler:"gc", Platform:"linux/amd64"} 服务器版本: version.Info{Major:"1", Minor:"14", GitVersion:"v1.14.1 ", GitCommit:"b7394102d6ef778017f2ca4046abbaa23b88c290", GitTreeState:"clean", BuildDate:"2019-04-08T17:02:58Z", GoVersion:"go1.12.1", 编译器:"gc", 平台:"linux/amd64"}

$ kubectl 获取 po,svc,statefulset

问题:我没有获得 statefulset 无头服务的 DNS 地址

当我尝试 $ nslookup sfs-svc.default.svc.cluster.local

0 投票
4 回答
15832 浏览

kubernetes - 如何在 kubernetes 上设置基本的 rabbitmq

我需要在 kubernetes 集群上设置一个没有持久性或安全要求的基本 rabbit mq 实例(无集群设置)。

我需要的:

单个 rabbit mq pod 作为 stateful set 运行,replicas = 1,并通过特定 url(amgp 端口和管理接口端口)从集群内部和外部访问它

我不需要的东西:

  • 坚持
  • 安全
  • 集群设置

到目前为止,我发现的 helm 图表都是针对具有集群、持久性等的生产设置,但我不需要这些东西,因为我只会使用实例进行测试

这是我到目前为止所拥有的:

0 投票
2 回答
2694 浏览

kubernetes - 将 Ordinal Index 传递给 StatefulSet 环境变量是否有更简单的方法?

我正在尝试运行 zookeeper 合奏,但在将唯一 ID 作为环境变量传递时遇到问题,这是此处ZOO_MY_ID找到的官方 zookeeper 图像所要求的。

我已经尝试阅读此内容并发现类似的溢出问题,但似乎没有一个有效。

kubernetes statefulsets index/ordinal 在模板中公开 有没有办法在 kubernetes statefulset 配置文件中获取 pod 的序数索引?

出于某种原因,我仍然看到所有服务器的 ID 都是默认 ID 1

运行以下命令显示没有传递任何 ID,但是我使用的是此处显示的 hacky 方式:https ://stackoverflow.com/a/48086813/5813215

kubectl exec -it zoo-2 -n kafka-dev printenv | grep "ZOO_"

0 投票
1 回答
279 浏览

kubernetes - 如何解决状态集中的 Pod 启动和服务 DNS 查找之间的竞争

我正在尝试编写一个所有 pod 都相互连接的应用程序。我已阅读文档

Pod 的序号、主机名、SRV 记录和 A 记录名称未更改,但与 Pod 关联的 IP 地址可能已更改。在本教程使用的集群中,他们有。这就是为什么不要将其他应用程序配置为通过 IP 地址连接到 StatefulSet 中的 Pod 很重要的原因。

如果您需要查找并连接到 StatefulSet 的活动成员,则应查询无头服务的 CNAME ( nginx.default.svc.cluster.local)。与 CNAME 关联的 SRV 记录将仅包含 StatefulSet 中正在运行和就绪的 Pod。

如果您的应用程序已经实现了测试活动性和就绪性的连接逻辑,您可以使用 Pod 的 SRV 记录 ( web-0.nginx.default.svc.cluster.local, web-1.nginx.default.svc.cluster.local),因为它们是稳定的,并且您的应用程序将能够在 Pod 转换为 Running 和准备好。

我虽然可以通过以下方式做到这一点:

  • 查找服务的 SRV 记录以检查哪些 pod 已准备就绪
  • 连接到所有准备好的 pod
  • 打开表示准备就绪的端口

但是,当我开始在 minikube 上实现它时,它似乎很活泼,当我查询 A/SRV 记录时:

  • 在第一个节点上,我在打开端口之前没有找到记录错误(听起来不错)
  • 在第二个节点上,有时我找不到记录,有时只有一条记录
  • 在第三个节点上,我有时会得到一条记录,有时会得到两条记录

在我看来,更新 DNS 记录和 statefulset 启动之间存在竞争。我不完全确定我做错了什么以及我如何误解了文档。

编辑目前代码如下:

  • hello-world.default.svc.cluster.local.查询/的A / SRV记录_hello-world._tcp.hello-world.default.svc.cluster.local.并打印调试
  • 绑定3080端口开始监听(连接逻辑未实现)
  • 打开8080端口

我预计 A/SRV 记录 forhello-world-0将为空, forhello-world-1将包含 hello-world-0 并且 forhello-world-N+1将包含hello-world-0to hello-world-N。在滚动更新期间,A/SRV 记录将包含所有其他对等点。

然而,DNS 记录似乎是异步更新的,因此即使n检测到 pod的生命周期并n + 1启动 pod,也不能保证 pod会在 DNS 中n + 1看到 pod 的地址。n

0 投票
4 回答
3771 浏览

mongodb - 连接到不同命名空间中的 Kubernetes mongo db

谁能指出如何使用命令行客户端或带有连接字符串的.net核心程序使用mongo客户端连接到mongo db实例?

我们在 digitalocean 中创建了一个带有命名空间的示例集群,比如说mongodatabase

我们安装了带有 3 个副本的 mongo statefulset。我们能够使用以下命令成功连接 kubectl --kubeconfig=configfile.yaml -n mongodatabase exec -ti mongo-0 mongo 但是当我们从不同的命名空间或默认命名空间使用以下格式的 pod 名称连接时,它不起作用。

其中mongo-0.mongo.mongodatabase.cluster.svc.localpod-0.service_name.namespace.cluster.svc.local中(也尝试过 pod-0.statfulset_name.namespace.cluster.svc.local 和 pod-0。 service_name.statefulsetname.namespace.cluster.svc.local) 等,

任何人都可以帮助在命令行中与 mongo 客户端连接时使用正确的 dns 名称/连接字符串,也可以从 java/.net core 等程序中使用吗?

我们还应该在这里使用 kubernetes 部署而不是 statefulsets 吗?

0 投票
1 回答
484 浏览

kubernetes - 如何在 Kubernetes 部署或 StatefulSet 之间创建依赖关系

我有几个有状态集,一个依赖于另一个,我需要第一个有状态集中的 pod 在开始扩展第二个有状态集之前处于就绪状态。

我正在寻找是否有办法链接两个有状态集以自动方式实现这一目标,而不是我手动执行。我对部署也有同样的担忧。

目前我不使用 Helm 或任何其他工具,只使用 kubectl。

0 投票
1 回答
882 浏览

azure-aks - Redis 集群 StatefulSet 的 Pod 删除不会恢复 redis 的集群状态

我在 statefulset 中使用了 redis:5.0.1-alpine,有状态集有 6 个 pod,redis 集群的形成是使用以下命令完成的

redis-cli --cluster create {IPlist 放在这里} --cluster-replicas 1

现在,如果 Pod 被意外删除或 AKS 停止服务,那么在 AKS 恢复后创建的 Pod 将具有不同的 IP。

我尝试故意删除 pod,当重新创建 pod 时,集群状态更改为“失败”(最初创建集群时“正常”)

此外,当我尝试将旧数据集放入集群时,会出现一条消息,告知“集群已关闭”

我已经展示了用于集群创建的 redis.conf 文件的代码

问题描述快照

Redis Cluster Nodes and Slots 相关数据作为附加的 Redis 集群节点 和插槽

0 投票
1 回答
690 浏览

postgresql - 如何将 Postgres DB 从一个 Kubernetes 集群移动到另一个

我有一个在 GKE 集群(有状态集,SSD 卷)上运行的大型(300Gb)Postgres 数据库。我需要将此数据库移动到另一个 GKE 集群。

实现它的最简单方法是什么?

我尝试使用管道pg_dump/来完成它pg_restore,但它需要很长时间,并且由于某种原因,并非所有约束/触发器都被重新创建。

是否有任何适当的方法可以优雅地“关闭”在 Kubernetes 中运行的 Postgres 服务器并/pgdata直接复制文件夹(从一个卷到另一个卷)?

其他想法?tnx

0 投票
2 回答
168 浏览

kubernetes - 如何在 kubernetes 中维护一组唯一的数字运算容器?

我想在 kubernetes 中运行一组“容器”,每个容器仅在 docker 环境变量中有所不同(每个都搜索它自己的数据集,该数据集位于网络存储中,然后缓存到容器的 ram 中)。例如:

  • 容器 1 -> 数据集 1
  • 容器 2 -> 数据集 2

随着时间的推移,我想从这个“集合”中添加(有时删除)容器,但不想在这样做时重新启动所有容器。

根据我对 Kubernetes 的(幼稚)知识,我能看到的唯一方法是:

  • 每个容器都可以是它自己的部署——但是有成千上万个容器,所以修改和管理会很痛苦。

所以我的问题是:

  1. 我可以使用 StatefulSet 来管理它吗?

    1.1。当 StatefulSet 被“更新”时,它是否必须重新启动所有 pod,即使它们的“规范”没有改变?1.2 StatefulSets 是否允许每个独特的容器/pod 拥有自己的环境变量?

  2. 是否有任何 kubernetes 概念将部署“分组”到某个逻辑单元中?
  3. 关于如何在 Kubernetes 中实现这一点还有其他想法吗?
  4. docker swarm(或其他容器管理平台)会更适合我的用例吗?