我正在使用 go-client 访问我环境中的 k8s 资源。有一些 API 可以获取/列出 pod、命名空间等。
如何访问我当前正在运行的 pod?
我正在使用 go-client 访问我环境中的 k8s 资源。有一些 API 可以获取/列出 pod、命名空间等。
如何访问我当前正在运行的 pod?
您可以使用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"))