我们使用 Kubernetes 1.9.0,想知道是否有方法可以在其有状态集配置文件中访问 pod 的“序数索引”。我们喜欢动态地为 pod 的标签分配一个值(从序数索引派生),然后使用它在规范下设置 pod 亲和性(或反亲和性)。
或者,pod 的实例名称在有状态集配置文件中可用吗?如果是这样,我们有望从中提取序数索引并动态分配给标签(以供以后用于亲和力)。
现在唯一的选择是从主机名中提取索引
lifecycle:
postStart:
exec:
command: ["/bin/sh", "-c", "export INDEX=${HOSTNAME##*-}"]
您基本上可以在 statefulset 中获取 pod 的唯一名称作为环境变量,但您必须从中提取序号索引
在容器规格中:
env:
- name: cluster.name
value: k8s-logs
- name: node.name
valueFrom:
fieldRef:
fieldPath: metadata.name
要获取有状态集的确切序号,您可以使用以下代码
env:
- name: ORDINAL_NUMBER
valueFrom:
fieldRef:
fieldPath: metadata.labels['apps.kubernetes.io/pod-index']