0

我正在使用 go-client 访问我环境中的 k8s 资源。有一些 API 可以获取/列出 pod、命名空间等。

如何访问我当前正在运行的 pod?

4

1 回答 1

0

您可以使用pod 字段通过环境变量向容器公开 Pod 信息

apiVersion: v1
kind: Pod
metadata:
  name: dapi-envars-fieldref
spec:
  containers:
    - name: test-container
      ...
      ...
      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

然后只需在您的 Go 代码中查找这些环境变量:

log.Printf("MY_POD_NAME: %q", os.Getenv("MY_POD_NAME"))
于 2022-01-07T17:42:33.517 回答