【问题标题】:Show Kubernetes pod name from docker container running a .Net Core API从运行 .Net Core API 的 docker 容器中显示 Kubernetes pod 名称
【发布时间】:2021-03-05 06:13:52
【问题描述】:

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

有没有办法转发或注入信息?

这可能有助于通过丰富日志或连接将问题锁定到 pod。

【问题讨论】:

  • 我不确定我是否理解清楚,您的意思是将 pod 名称作为 env var 传递给容器内运行的脚本可以使用吗?
  • 如果将 pod 名称作为 env var 传递允许我在 api 的 c# 代码中使用它,那么可以。

标签: .net docker kubernetes .net-core


【解决方案1】:

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

来自docs的描述:

这个页面展示了一个 Pod 如何使用环境变量来暴露 Pod 中运行的容器的有关自身的信息。环境 变量可以暴露 Pod 字段和 Container 字段。

请参阅this example,了解信息如何作为容器上的环境变量公开。

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

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

【讨论】:

  • 不错。从那里开始,我只需要像往常一样阅读环境变量,然后在 kubernetes 之外(例如本地主机)伪造它们或设置它们
猜你喜欢
  • 2021-10-26
  • 1970-01-01
  • 1970-01-01
  • 2020-05-13
  • 2019-08-28
  • 2018-12-31
  • 2020-05-15
  • 2021-03-31
  • 1970-01-01
相关资源
最近更新 更多