我想在 openshift 的应用程序日志中打印我的应用程序是 运行 的当前 podname

I want to print the current podname in which my application is running in application logs in openshift

所以我的 java 应用程序 运行 在 openshift 的几个 pod 中,出于某些业务目的,我想在应用程序日志中打印 podname。有什么办法吗?谢谢

您应该能够使用 Kubernetes“向下 API”向应用程序公开 Pod 名称。这可以通过使用 Pod 名称公开环境变量或挂载包含该名称的文件来完成。

这是使用环境变量执行此操作的文档:https://kubernetes.io/docs/tasks/inject-data-application/environment-variable-expose-pod-information/#the-downward-api

这是该页面上示例的精简版,仅突出显示 Pod 名称:

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-fieldref
spec:
  containers:
    - name: test-container
      image: k8s.gcr.io/busybox
      command: [ "sh", "-c"]
      args:
      - while true; do
          echo -en '\n';
          printenv MY_POD_NAME;
          sleep 10;
        done;
      env:
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
  restartPolicy: Never

正如您从文档中看到的那样,您还可以公开许多其他上下文。

可在此处找到安装卷文件的等效文档:https://kubernetes.io/docs/tasks/inject-data-application/downward-api-volume-expose-pod-information/#the-downward-api