问题标签 [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.
kubernetes - Kubernetes StatefulSet 的 RBD StorageClass 问题
我在 K8S 上将 Jenkins 服务部署为 StatefulSet。
我的VolumeMounts
样子:
我volumeClaimTemplates
在 StatefulSet 声明中的部分如下所示:
我已经定义了一个存储类rbd
,它的控制器正在我的集群中运行:
现在,当我启动我的 Stateful Set 时,pod 保持在以下状态:
对 Pod 进行描述会产生:
我的 PVC 已创建,我的 PV 也已创建。
我的 RBD 容器的日志也没有显示错误:
因此,根据我的 describe 命令,我不确定为什么我可以附加 VolumeMount 但不能安装它。任何想法?
kubernetes - 使用 istio 在 Kubernetes 上运行 mongodb stateful set
我正在尝试使用 istio 在 kubernetes 上设置 mongodb。我的状态集如下:
但是,未创建 pod,我看到以下错误:
我假设treeservice
是一个有效的 pod 名称。我错过了什么吗?
cassandra - Kubernetes:在 GCP 上部署 Cassandra(有状态集)
有没有人尝试使用 kubernetes(不是 GKE)在 GCP 上部署 Cassandra(POC)。如果是这样,您能否分享有关如何使其工作的信息?
kubernetes - 即使资源可用,Pod 也没有被调度
我在 GCP 中运行 4 个工作节点集群。
我节点的当前状态是:
节点 A
节点 B
节点 C
节点 D
正如所有结果显示的那样,我的节点都很健康,并且拥有充足的资源,每个节点有 4 个 CPU,每个节点有 16GB 内存。
现在,当我尝试在命名空间中部署第二个 statefulSet 时,Pod 仍处于Pending
状态。描述显示以下消息:
我还排空了 2 个节点,标记了这两个节点并将 a 附加nodeSelector
到我的 statefulset 以仅部署在这 2 个几乎为空的节点上,但结果是相同的。
我不确定我的 pod 为什么要尝试scale-up
。那不是本意。任何帮助将不胜感激。
kubernetes - Kubernetes 服务架构
在同一个 Kubernetes 集群中,
我可以将多个 StatefulSet 附加到一个无头服务,还是每个 StatefulSet 都有自己的无头服务?这样做有什么好处和坏处?
我可以在同一个集群中混合标准服务和无头服务吗?具体来说,我想使用 LoadBalancer 服务来负载平衡无头服务。我可以定义 LoadBalancer 类型的服务并附加无头服务(ClusterIP = None)吗?如果是,我怎样才能做到这一点?
这是我的预期架构:
任何建议和见解都值得赞赏。
我的设置
我的服务和附加到它的 statefulsets 有不同的标签。
我的豆荚
注意服务端点是<none>
. 我不确定这是正确的设置。
kubernetes - 是否可以让 Kubernetes statefulset 中的所有 pod 都失败 ReadinessProbes 而不是一个?
我们有一个服务(德鲁伊历史)的状态集,它在本地 SSD 上缓存大量数据。(我们使用污点和亲和性在 SSD 中为每个节点运行一个 pod。)当我们需要替换底层机器时,这意味着 pod 以空的本地磁盘启动,然后需要一段时间来重新填充缓存。理想情况下,我们只想一次有计划地更换节点(例如,GKE 节点池升级),并等到新节点上的 pod 完全填满其缓存后再推出下一个节点。
好的,这意味着我们需要将 PodDisruptionBudget 设置为 1,并设置 Readiness 探针以使新节点在缓存被填满之前不准备好。
问题是:该系统并没有真正为我们提供一个很好的方式来询问“pod X 是否下载了它所需要的所有东西,以使系统作为一个整体完全复制”。
它让我们问的是“整个系统是否完全复制?”。
因此,我们很想编写一个 Readiness 探针,上面写着“除非整个系统完全复制,否则未准备好”。但这意味着在节点池升级期间(或其他短暂的“未完全复制”状态),statefulset 中的每个 pod 都将变为 unready。
我的问题是:我并不真正了解 k8s 咨询 Ready 状态的每个部分的全部含义。如果 SS 中的每个 pod 都没有准备好而单个 pod 正在“加载”,那会不会很糟糕?
我的理解是,readiness 用于控制 Deployment 或 StatefulSet rollout 的速度(在这里很好),它也用于让服务确定路由到哪些 pod。在这种情况下,我们实际上并没有使用与 StatefulSet 关联的 Service 进行路由(客户端直接连接到各个 pod)。所以看起来这实际上可能很好。但是是吗?或者是否还有其他 Ready 状态的应用程序,这会使我们在全局复制未达到 100% 时将所有 pod 标记为未准备好?
kubernetes - 有状态集不转移到新节点
我已经在我的 Kubernetes 集群上部署了一个有状态集应用程序。它具有持久卷等和一个副本。我面临的问题是,当我关闭运行有状态集的节点时,pod 不会在新节点上重新启动。它继续等待节点启动并最终在同一节点上重新启动。StatefulSet 规范中是否有一些我缺少的设置。我已按照 Kubernetes 指南中提到的示例进行设置:https ://kubernetes.io/docs/concepts/workloads/controllers/statefulset/#components
我错过了什么?
deployment - 在 kubernetes StatefulSet 中按顺序创建 Pod
我在部署我的应用程序时遇到了困难,我的应用程序需要了解关于特定 statefulset 的集群内部状态并采取相应的行为。所以在我的 deployment.yml 文件中,我添加
哪个 kubernetes 将立即创建 3 个 pod(它不会等到容器内的应用程序启动),这在我的情况下是不需要的。所以我在应用程序中有一个逻辑,比如它的第一个副本,如果它的第二个(或第一个以外的任何副本)获取 statefulset 中生成的 pod 的最后一个 ip,然后连接到它,则执行 behavior1。
下面是我的代码
因此,由于 kubernetes 不会等到我的代码在 pod 中运行并且它只是启动 pod,所以我的逻辑失败并且它无法按预期工作。
目前我看到的唯一方法是将副本 = 1 并手动扩展它,我认为这不好。随着同样问题的出现,部署时间的扩展也无济于事。任何想法通过 kubernetes 完成这项工作?
kubernetes - 无法在同一个 AWS AZ 中创建 statefulset 和 PVC
我试图在 AWS AZ 中创建的集群中启动两个 Cassandra statefulset 实例和各自的 PVC(跨 3 个区域,eu-west-1a、eu-west-1b和eu-west-1c)。
我创建了一个包含以下 2 个节点的节点组,如图所示,这些节点附加在区域eu-west-1a和eu-west-1b
当我启动 Cassandra 实例(使用 Helm)时,只有一个实例启动。另一个实例显示错误,
这些实例的 PVC 是有界的,
但是,PV 显示它们位于eu-west-1b和eu-west-1c区域
我尝试将以下拓扑添加StorageClass
到无济于事,
但尽管如此,我仍然可以看到区域中的 PV,eu-west-1b
& eu-west-1c
。
使用 K8 1.11。
任何其他可能的修复?
kubernetes - 如何向其中的 pod 公开部署或 statefulset 的规模?
我的第一个想法是使用向下 API,但这似乎并没有暴露部署/有状态集的规模。我希望能够避免手动将其添加为单独的环境变量,或者如果可能的话,不得不依赖所有的 pod 相互发现来确定规模。
用例:为连接到外部服务的应用程序部署许多 pod。所述服务执行某种形式的一致散列(我相信这是正确的术语?)将数据发送到客户端,因此连接的客户端发送一个从 0 - N-1 和客户端总数 N 的 id 号。在这种情况下,部署/状态集规模将为 N。