.net - 从运行 .Net Core API 的 docker 容器中显示 Kubernetes pod 名称
问题描述
在 Kubernetes 集群的 docker 容器中运行 .NET Core API:如何告诉 API pod 的名称。
反正有转发或注入信息吗?
这可能有助于通过丰富日志或连接将问题归结为 pod。
解决方案
Downward
API 提供了向容器公开信息的方法。
文档中的描述:
本页展示了 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
然后在容器内运行的脚本可以从环境变量中访问这些信息。
推荐阅读
- c++ - 使用 OpenSSL 将 P1363 编码签名转换为 ECDSA_SIG
- java - 动画在两个方向而不是仅向右跟踪 JavaFX 行
- docker - docker copy file from image to host 生成文件内容的开头和结尾的未知符号和数字
- javascript - 请问如何从代码更新缓存而不是使用开发工具
- javascript - Codeigniter 动态附加输入字段无法发布到数据库
- python - Pydoc找不到已安装的模块
- apache-nifi - 时间戳格式问题(NiFi 的 PutDatabaseRecord)
- asp.net-core - .net core load *.deps.json 在运行时加载正确版本的依赖程序集
- git - git add :/ 实际上是做什么的?
- python-3.x - 在python中找到数据框中两列的最大值和最小值