kubernetes - 在有状态的 Kubernetes 中从服务中排除 pod
问题描述
我有一个有 5 个副本的 statefulset。这意味着我有名为 pod-0 .. pod-4 的 pod。
我想创建 2 个服务。
仅将请求路由到 pod-0 的服务(这是我的编辑服务器):我知道我可以通过服务选择器中的“statefulset.kubernetes.io/pod-name=pod-0”来实现这一点。这可以。
将请求路由到除 pod-0 之外的所有剩余节点的服务(即使应用程序扩展并添加更多实例,这些新实例也需要映射到此服务):我无法实现这一点。
关于如何实现第二次服务的任何想法?
由于它是通过 1 个有状态清单文件部署的,因此所有 pod 都具有相同的标签。
解决方案
谢谢(你的)信息 。我遵循了这种方法。
- 创建了角色+角色绑定+服务账号,有权更新标签。
- 在我使用 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 中传递。它达到了我的目的。
推荐阅读
- maven - IntelliJ IDEA maven 项目是否使用 maven 下载的 jar 来解决依赖关系?
- python - Datetime 的时间戳函数与预期的 UNIX 时间不匹配
- ios - “使用 Twitter 登录”,现在 Twitter 工具包已经消失了
- javascript - 在three.js平面中将png转换为高度
- vim - 在哪里放置系统范围的语言特定的 Vim ftplugin .vim 文件
- amazon-athena - 如何计算 2 个时间戳之间的差距(针对 AWS Athena 编辑)
- r - 如果条件发生在 for 循环中,则选择第 i 个元素
- python-3.x - 安装 keras 和 tensorflow 后,python 脚本因 Segmentation Fault (core dumped) 而崩溃
- php - 翻转键并从另一个数组构造值
- silverstripe - 如何在 Silvershop 中修改产品(将自定义字段添加到 $db)