From 22953c4be6e165792aebe63874fca7eebc1f3a78 Mon Sep 17 00:00:00 2001 From: "jizhong.jiangjz" Date: Thu, 25 Jul 2024 14:07:15 +0800 Subject: [PATCH] get pod namespace/name from environment --- pkg/exporter/nettop/cache.go | 34 +++++++++++++++++++++++----------- 1 file changed, 23 insertions(+), 11 deletions(-) diff --git a/pkg/exporter/nettop/cache.go b/pkg/exporter/nettop/cache.go index c62c2b0..e546dd3 100644 --- a/pkg/exporter/nettop/cache.go +++ b/pkg/exporter/nettop/cache.go @@ -64,24 +64,36 @@ func podNameFromServiceAccountToken() (string, error) { } func currentPodInfo() (string, string, error) { - namespace, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") - if err != nil { - return "", "", fmt.Errorf("failed get namespace in sidecar mode, err: %v", err) - } - - name, err := podNameFromServiceAccountToken() - if err != nil { - log.Warnf("failed get pod name from /var/run/secrets/kubernetes.io/serviceaccount/token, fallback to hostname") + var err error + namespace := os.Getenv("KUBESKOOP_POD_NAMESPACE") + name := os.Getenv("KUBESKOOP_POD_NAME") - name, err := os.ReadFile("/etc/hostname") + if namespace == "" { + log.Infof("failed get pod namespace for sidecar mode from env KUBESKOOP_POD_NAMESPACE, try from k8s serviceaccount") + namespaceBytes, err := os.ReadFile("/var/run/secrets/kubernetes.io/serviceaccount/namespace") if err != nil { return "", "", fmt.Errorf("failed get namespace in sidecar mode, err: %v", err) } - return string(namespace), string(name), nil + namespace = string(namespaceBytes) + } + + if name == "" { + log.Infof("failed get pod namespace for sidecar mode from env KUBESKOOP_POD_NAME, try from k8s serviceaccount") + name, err = podNameFromServiceAccountToken() + if err != nil { + log.Warnf("failed get pod name from /var/run/secrets/kubernetes.io/serviceaccount/token, fallback to hostname") + + nameBytes, err := os.ReadFile("/etc/hostname") + if err != nil { + return "", "", fmt.Errorf("failed get namespace in sidecar mode, err: %v", err) + } + + return namespace, string(nameBytes), nil + } } - return string(namespace), name, nil + return namespace, name, nil } func initDefaultEntity(sidecarMode bool) error {