【问题标题】:Excluding a pod from service in statefulset Kubernetes在有状态的 Kubernetes 中从服务中排除 pod
【发布时间】:2020-11-26 11:24:59
【问题描述】:

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

我想创建 2 个服务。

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

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

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

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

【问题讨论】:

  • workaround 会以某种方式帮助您吗?主要思想是额外添加标签以在将来与服务等一起使用它们(即使重新声明了 pod)
  • 嗨@Vitalii。谢谢(你的)信息 。我遵循了这种方法。 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} 以上环境变量我我正在传递状态集。它达到了我的目的。
  • 很高兴听到这个消息。请发表您的评论作为未来研究人员的答案

标签: kubernetes kubernetes-statefulset


【解决方案1】:

感谢您的信息。我遵循了这种方法。

  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 中传递。它达到了我的目的。

【讨论】:

    猜你喜欢
    • 2020-02-13
    • 1970-01-01
    • 2018-10-09
    • 1970-01-01
    • 1970-01-01
    • 2021-05-16
    • 1970-01-01
    • 2019-09-19
    • 1970-01-01
    相关资源
    最近更新 更多