有没有办法在 kubernetes statefulset 配置文件中获取 pod 的序数索引?

问题描述 投票:0回答:3

我们使用 Kubernetes 1.9.0,想知道是否有方法可以在其有状态集配置文件中访问 pod 的“序数索引”。我们喜欢动态地为 pod 的标签分配一个值(从序数索引派生),然后使用它在规范下设置 pod 亲和性(或反亲和性)。

或者,pod 的实例名称在有状态集配置文件中可用吗?如果是这样,我们有望从中提取序数索引并动态分配给标签(以供以后用于亲和力)。

kubernetes kubernetes-helm statefulset
3个回答
16
投票

现在唯一的选择是从主机名中提取索引

lifecycle:
  postStart:
    exec:
      command: ["/bin/sh", "-c", "export INDEX=${HOSTNAME##*-}"]

12
投票

您基本上可以在 statefulset 中获取 pod 的唯一名称作为环境变量,但您必须从中提取序号索引

在容器规格中:

env:
  - name: cluster.name
    value: k8s-logs
  - name: node.name
    valueFrom:
      fieldRef:
        fieldPath: metadata.name

0
投票

要获取有状态集的确切序号,您可以使用以下代码

env:
  - name: ORDINAL_NUMBER
    valueFrom:
      fieldRef:
        fieldPath: metadata.labels['apps.kubernetes.io/pod-index']
© www.soinside.com 2019 - 2024. All rights reserved.