首页 > 解决方案 > 在有状态的 Kubernetes 中从服务中排除 pod

问题描述

我有一个有 5 个副本的 statefulset。这意味着我有名为 pod-0 .. pod-4 的 pod。

我想创建 2 个服务。

  1. 仅将请求路由到 pod-0 的服务(这是我的编辑服务器):我知道我可以通过服务选择器中的“statefulset.kubernetes.io/pod-name=pod-0”来实现这一点。这可以。

  2. 将请求路由到除 pod-0 之外的所有剩余节点的服务(即使应用程序扩展并添加更多实例,这些新实例也需要映射到此服务):我无法实现这一点。

关于如何实现第二次服务的任何想法?

由于它是通过 1 个有状态清单文件部署的,因此所有 pod 都具有相同的标签。

标签: kuberneteskubernetes-statefulset

解决方案


谢谢(你的)信息 。我遵循了这种方法。

  1. 创建了角色+角色绑定+服务账号,有权更新标签。
  2. 在我使用 Docker 文件 [CMD] 执行的脚本结束时,我安装了 kubectl,然后执行 kubectl label pod ${HOSTNAME} pod-type=${POD_TYPE} --server=kubernetes.default --token=$( cat /var/run/secrets/kubernetes.io/serviceaccount/token) --certificate-authority=/var/run/secrets/kubernetes.io/serviceaccount/ca.crt -n ${POD_NAMESPACE}

在 env 变量之上,我在 statefulsets 中传递。它达到了我的目的。


推荐阅读