首页 > 解决方案 > 从运行 .Net Core API 的 docker 容器中显示 Kubernetes pod 名称

问题描述

在 Kubernetes 集群的 docker 容器中运行 .NET Core API:如何告诉 API pod 的名称。

反正有转发或注入信息吗?

这可能有助于通过丰富日志或连接将问题归结为 pod。

标签: .netdockerkubernetes.net-core

解决方案


DownwardAPI 提供了向容器公开信息的方法。

文档中的描述:

本页展示了 Pod 如何使用环境变量向运行在 Pod 中的容器公开有关自身的信息。环境变量可以暴露 Pod 字段和 Container 字段。

请参阅此示例以了解信息如何作为容器上的环境变量公开。

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_NODE_NAME MY_POD_NAME MY_POD_NAMESPACE;
          printenv MY_POD_IP MY_POD_SERVICE_ACCOUNT;
          sleep 10;
        done;
      env:
        - name: MY_NODE_NAME
          valueFrom:
            fieldRef:
              fieldPath: spec.nodeName
        - name: MY_POD_NAME
          valueFrom:
            fieldRef:
              fieldPath: metadata.name
        - name: MY_POD_NAMESPACE
          valueFrom:
            fieldRef:
              fieldPath: metadata.namespace
        - name: MY_POD_IP
          valueFrom:
            fieldRef:
              fieldPath: status.podIP
        - name: MY_POD_SERVICE_ACCOUNT
          valueFrom:
            fieldRef:
              fieldPath: spec.serviceAccountName
  restartPolicy: Never

然后在容器内运行的脚本可以从环境变量中访问这些信息。


推荐阅读