我有一个包含三个副本的Deployment,每个人都从一个不同的节点开始,行为是入口。对于测试和故障排除,我想查看哪个容器/节点满足了我的请求。这怎么可能?
我知道的唯一方法是打开所有Pod上的日志,执行请求并在访问日志中搜索具有我的请求的Pod。但这很复杂且容易出错,尤其是在具有其他用户请求的高效应用程序上。
我正在寻找类似HTTP Response标头的内容:
X-Kubernetes-Pod: mypod-abcdef-23874
X-Kubernetes-Node: kubw02
答案 0 :(得分:0)
AFAIK,没有类似的功能。
我能想到的最简单的方法是,从您自己的API中将这些信息添加为标头。
从技术上讲,您必须Expose Pod Information to Containers Through Environment Variables并将其从代码中获取,才能将标头添加到响应中。
会是这样的:
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
然后从API中获取信息并将其插入标头中。